package db

import (
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
    "fmt"
    "time"
)

type Class struct {
    id          uint "gorm:primaryKey"
    name        string
    created_at  time.Time
}

type Student struct {
    id          uint "gorm:primaryKey"
    prename     string
    surname     string
    sex         string
    study_id    uint
    class_id    uint
    group_id    uint
    created_at  time.Time
}

type Study struct {
    id          uint "gorm:primaryKey"
    name        string
    created_at  time.Time 
}

type Lecture struct {
    id          uint "gorm:primaryKey"
    title       string
    points      uint
    class_id    uint
    created_at  time.Time
}

type Submission struct {
    id          uint "gorm:primaryKey"
    student_id  uint
    lecture_id  uint
    class_id    uint
    points      float32
    created_at  time.Time
}

type Group struct {
    id          uint "gorm:primaryKey"
    name        string
    project     string
    has_passed  bool
    presentation    string
    class_id    uint
    created_at  time.Time
}

func ConnectDB() *gorm.DB {
    dsn := "host=postgres.cyperpunk.de user=dergrumpf password=1P2h3i4lon$% dbname=phil port=5432 sslmode=disable TimeZone=Europe/Berlin"
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    
    if err != nil {
        fmt.Println(err)
    }

    db.AutoMigrate(
        &Class{},
        &Student{},
        &Study{},
        &Lecture{},
        &Submission{},
        &Group{},
    )

    return db
}
