generated from VLADIMIR/template
add time
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package models
|
||||
|
||||
type Game struct {
|
||||
StartTime int64
|
||||
EndTime int64
|
||||
State string
|
||||
StartTime string
|
||||
EndTime string
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user