This commit is contained in:
2025-06-15 01:02:46 +07:00
parent 36aaa49273
commit b17599eb39
10 changed files with 83 additions and 36 deletions
+30 -14
View File
@@ -32,7 +32,7 @@ func NewRepository(filepath string) (*Repository, error) {
if err != nil {
return nil, err
}
_, err = db.Exec("CREATE TABLE IF NOT EXISTS games (id INTEGER PRIMARY KEY AUTOINCREMENT, state TEXT, startAt TIMESTAMP, endAt TIMESTAMP);")
_, err = db.Exec("CREATE TABLE IF NOT EXISTS games (id INTEGER PRIMARY KEY AUTOINCREMENT, state TEXT, startAt TEXT, endAt TEXT);")
if err != nil {
return nil, err
}
@@ -185,33 +185,49 @@ func (r *Repository) GiveApplications(ctx context.Context, teamId int64, applica
return nil
}
func (r *Repository) GetGame(ctx context.Context) (string, error) {
rows, err := r.db.Query("select state from games limit 1")
func (r *Repository) GetGame(ctx context.Context) (*models.Game, error) {
rows, err := r.db.Query("select state, startAt, endAt from games limit 1")
if err != nil {
return "", err
return nil, err
}
defer rows.Close()
state := ""
game := &models.Game{}
if rows.Next() {
err := rows.Scan(&state)
err := rows.Scan(&game.State, &game.StartTime, &game.EndTime)
if err != nil {
return "", err
return nil, err
}
return state, nil
return game, nil
}
state = "NEW"
_, err = r.db.Exec("insert into games (state) values ($1)", state)
state := "NEW"
_, err = r.db.Exec("insert into games (state, startAt, endAt) values ($1, '', '')", state)
if err != nil {
return "", err
return nil, err
}
return state, nil
game.State = state
return game, nil
}
func (r *Repository) GameUpdateState(ctx context.Context, state string) error {
_, err := r.db.Exec("update games set state = $1", state)
return err
game, err := r.GetGame(ctx)
if err != nil {
return err
}
switch state {
case "RUN":
if game.StartTime == "" {
_, err := r.db.Exec("update games set state = $1, startAt = datetime('now', 'localtime')", state)
return err
}
_, err := r.db.Exec("update games set state = $1", state)
return err
case "STOP":
_, err := r.db.Exec("update games set state = $1, endAt = datetime('now', 'localtime')", state)
return err
}
return nil
}
func (r *Repository) DeleteAllTeams(ctx context.Context) error {