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
+2 -2
View File
@@ -1,7 +1,7 @@
package models
type Game struct {
StartTime int64
EndTime int64
State string
StartTime string
EndTime string
}
+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 {
+6 -2
View File
@@ -41,11 +41,15 @@ func (s *Services) GiveApplications(ctx context.Context, req *proto.GiveApplicat
}
func (s *Services) GetGame(ctx context.Context, _ *proto.GetGameReq) (*proto.GetGameRsp, error) {
state, err := s.repository.GetGame(ctx)
game, err := s.repository.GetGame(ctx)
if err != nil {
return nil, status.Errorf(codes.Internal, err.Error())
}
return &proto.GetGameRsp{State: state}, nil
return &proto.GetGameRsp{
State: game.State,
StartAt: game.StartTime,
EndAt: game.EndTime,
}, nil
}
func (s *Services) GameStart(ctx context.Context, _ *proto.GameStartReq) (*proto.GameStartRsp, error) {