chirpnest/sql.go

98 lines
2.0 KiB
Go
Raw Normal View History

2019-05-03 05:58:36 +02:00
package main
import (
"log"
)
func initDB() {
log.Println("Setting up database...")
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
defer tx.Rollback()
_, err = tx.Exec("set foreign_key_checks = 0")
if err != nil {
log.Fatal(err)
}
var name string
rows, err := db.Query("show tables")
if err != nil {
log.Fatal(err)
}
for rows.Next() {
err = rows.Scan(&name)
if err != nil {
log.Fatal(err)
}
_, err = tx.Exec("drop table " + name)
if err != nil {
log.Fatal(err)
}
}
err = rows.Err()
if err != nil {
log.Fatal(err)
}
rows.Close()
_, err = tx.Exec("set foreign_key_checks = 1")
if err != nil {
log.Fatal(err)
}
err = tx.Commit()
if err != nil {
log.Fatal(err)
}
log.Println("Database cleaned up")
_, err = db.Exec(`CREATE TABLE user (
id BIGINT UNSIGNED NOT NULL,
user_id VARCHAR(32) NOT NULL,
name VARCHAR(80) NOT NULL,
guild_id SMALLINT(5),
last_msg TIMESTAMP,
busy_until TIMESTAMP,
role ENUM('commander', 'bartebder', 'squire', 'none'),
PRIMARY KEY (id)
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci;`)
if err != nil {
log.Fatal(err)
}
_, err = db.Exec(`CREATE TABLE msg (
2019-05-03 09:29:17 +02:00
id BIGINT UNSIGNED NOT NULL
,user_id BIGINT UNSIGNED NOT NULL
,direction ENUM('incoming', 'outgoing')
,date TIMESTAMP NOT NULL
,text VARCHAR(4096) NOT NULL
2019-05-03 09:30:02 +02:00
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci;`) // ,FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
2019-05-03 05:58:36 +02:00
if err != nil {
log.Fatal(err)
}
log.Println("Database set up")
}
2019-05-03 09:15:16 +02:00
2019-05-03 09:15:52 +02:00
func putMsg(m ChatWarsMessage) {
2019-05-03 09:15:16 +02:00
stmt, err := db.Prepare(`INSERT INTO msg (id, user_id, direction, date, text)
VALUES (?, ?, ?, FROM_UNIXTIME(?), ?);`)
if err != nil {
log.Fatal(err)
}
_, err = stmt.Exec(m.MsgID64, m.UserID64, m.Direction, m.MsgDate, m.MsgText)
if err != nil {
log.Fatal(err)
}
2019-05-03 13:24:32 +02:00
err = stmt.Close()
if err != nil {
log.Fatal(err)
}
2019-05-03 09:15:16 +02:00
}