Files
itsc/db/install.go
2022-11-23 18:08:04 +08:00

68 lines
1.1 KiB
Go

package db
import "log"
func install() {
var err error
log.Println("Installing tables")
tx, err := DB.Begin()
if err != nil{
log.Fatal(err)
tx.Rollback()
}
_, err = tx.Exec(`
CREATE TABLE timetables (
id serial primary key,
"name" text NOT NULL,
"limit" integer NOT NULL DEFAULT 1,
status bool NOT NULL DEFAULT false,
created timestamp NOT NULL DEFAULT now()
);
`)
if err != nil{
log.Fatal(err)
tx.Rollback()
}
_, err = tx.Exec(`
CREATE TABLE timeslots (
id serial primary key,
ttid integer not null references timetables(id),
"name" text NOT NULL,
"time" text NOT NULL,
capacity integer NOT NULL DEFAULT 1,
take integer NOT NULL DEFAULT 0 check (take <= capacity),
created timestamp NOT NULL DEFAULT now()
);
`)
if err != nil{
log.Fatal(err)
tx.Rollback()
}
_, err = tx.Exec(`
CREATE TABLE takes (
username text NOT NULL,
tsid integer NOT null references timeslots(id),
created timestamp not null default now(),
PRIMARY KEY (username, tsid)
);
`)
if err != nil{
log.Fatal(err)
tx.Rollback()
}
err = tx.Commit()
if err != nil{
log.Fatal(err)
tx.Rollback()
}
log.Println("Successfully installed all tables")
}