63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
//go:generate go run gen_init_sql.go
|
|
|
|
package db
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"lishwist/env"
|
|
|
|
"github.com/Teajey/sqlstore"
|
|
_ "github.com/glebarez/go-sqlite"
|
|
)
|
|
|
|
var database *sql.DB
|
|
|
|
func Open() error {
|
|
db, err := sql.Open("sqlite", "./lishwist.db")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
database = db
|
|
return nil
|
|
}
|
|
|
|
func Init() error {
|
|
_, err := database.Exec(InitQuery)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func NewSessionStore() (*sqlstore.Store, error) {
|
|
deleteStmt, err := database.Prepare("DELETE FROM session WHERE id = ?;")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare delete statement: %w", err)
|
|
}
|
|
|
|
insertStmt, err := database.Prepare("INSERT INTO session (value) VALUES (?);")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare insert statement: %w", err)
|
|
}
|
|
|
|
selectStmt, err := database.Prepare("SELECT value FROM session WHERE id = ?;")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare select statement: %w", err)
|
|
}
|
|
|
|
updateStmt, err := database.Prepare("UPDATE session SET value = ?2 WHERE id = ?1;")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare update statement: %w", err)
|
|
}
|
|
|
|
s := sqlstore.NewSqlStore(database, sqlstore.Statements{
|
|
Delete: deleteStmt,
|
|
Insert: insertStmt,
|
|
Select: selectStmt,
|
|
Update: updateStmt,
|
|
}, []byte(env.JwtSecret))
|
|
|
|
return s, nil
|
|
}
|