diff --git a/cmd/server/db.go b/cmd/server/db.go index 21398ef..bd8f05a 100644 --- a/cmd/server/db.go +++ b/cmd/server/db.go @@ -42,7 +42,9 @@ func NewDB(ctx context.Context, scheme, conn string) (DB, error) { game_uuid TEXT ); CREATE TABLE IF NOT EXISTS events ( - game_uuid TEXT + game_uuid TEXT, + timestamp DATETIME, + payload TEXT ); `); err != nil { return DB{}, err @@ -51,6 +53,39 @@ func NewDB(ctx context.Context, scheme, conn string) (DB, error) { return db, err } +func (db DB) Exec(ctx context.Context, q string, args ...any) error { + c, err := db.dial(ctx) + if err != nil { + return err + } + defer c.Close() + + _, err = c.ExecContext(ctx, q, args...) + return err +} + +func (db DB) Query(ctx context.Context, cb func(*sql.Rows) error, q string, args ...any) error { + c, err := db.dial(ctx) + if err != nil { + return err + } + defer c.Close() + + rows, err := c.QueryContext(ctx, q, args...) + if err != nil { + return err + } + defer rows.Close() + + for rows.Next() { + if err := cb(rows); err != nil { + return err + } + } + + return rows.Err() +} + func (db DB) dial(ctx context.Context) (*sql.DB, error) { c, err := sql.Open(db.scheme, db.conn) if err != nil {