Enha: removing memcache [WIP]
This commit is contained in:
		| @@ -158,15 +158,17 @@ func getAllNames() []string { | ||||
| // can room exists without state? I think no | ||||
| func getFullInfoByCtx(ctx context.Context) (*models.FullInfo, error) { | ||||
| 	resp := &models.FullInfo{} | ||||
| 	state, err := getStateByCtx(ctx) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	// state, err := getStateByCtx(ctx) | ||||
| 	// if err != nil { | ||||
| 	// 	return nil, err | ||||
| 	// } | ||||
| 	state, err := getPlayerByCtx(ctx) | ||||
| 	resp.State = state | ||||
| 	if state.RoomID == "" { | ||||
| 		return resp, nil | ||||
| 	} | ||||
| 	room, err := getRoomByID(state.RoomID) | ||||
| 	// room, err := getRoomByID(state.RoomID) | ||||
| 	room, err := repo.GetRoomByID(ctx, state.RoomID) | ||||
| 	if err != nil { | ||||
| 		log.Warn("failed to find room despite knowing room_id;", | ||||
| 			"room_id", state.RoomID) | ||||
| @@ -176,6 +178,15 @@ func getFullInfoByCtx(ctx context.Context) (*models.FullInfo, error) { | ||||
| 	return resp, nil | ||||
| } | ||||
|  | ||||
| func getPlayerByCtx(ctx context.Context) (*models.Player, error) { | ||||
| 	username, ok := ctx.Value(models.CtxUsernameKey).(string) | ||||
| 	if !ok { | ||||
| 		log.Debug("no username in ctx") | ||||
| 		return &models.Player{}, errors.New("no username in ctx") | ||||
| 	} | ||||
| 	return repo.GetPlayerByName(username) | ||||
| } | ||||
|  | ||||
| // // DEPRECATED | ||||
| // func leaveRole(fi *models.FullInfo) { | ||||
| // 	fi.Room.RedTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.RedTeam.Guessers) | ||||
|   | ||||
| @@ -4,7 +4,7 @@ CREATE TABLE rooms ( | ||||
|     id TEXT PRIMARY KEY, | ||||
|     created_at TIMESTAMP NOT NULL, | ||||
|     creator_name TEXT NOT NULL, | ||||
|     team_turn TEXT, | ||||
|     team_turn TEXT NOT NULL DEFAULT '', | ||||
|     this_turn_limit INTEGER, | ||||
|     opened_this_turn INTEGER, | ||||
|     blue_counter INTEGER, | ||||
| @@ -13,19 +13,19 @@ CREATE TABLE rooms ( | ||||
|     mime_done BOOLEAN, | ||||
|     is_public BOOLEAN, | ||||
|     is_running BOOLEAN, | ||||
|     language TEXT, | ||||
|     language TEXT NOT NULL DEFAULT '', | ||||
|     round_time INTEGER, | ||||
|     is_over BOOLEAN, | ||||
|     team_won TEXT, | ||||
|     room_pass TEXT | ||||
|     team_won TEXT NOT NULL DEFAULT '', | ||||
|     room_pass TEXT NOT NULL DEFAULT '' | ||||
| ); | ||||
|  | ||||
| CREATE TABLE players ( | ||||
|     id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
|     room_id TEXT NOT NULL, | ||||
|     username TEXT NOT NULL, | ||||
|     team TEXT, -- 'red' or 'blue' | ||||
|     role TEXT, -- 'guesser' or 'mime' | ||||
|     team TEXT NOT NULL DEFAULT '', -- 'red' or 'blue' | ||||
|     role TEXT NOT NULL DEFAULT '', -- 'guesser' or 'mime' | ||||
|     is_bot BOOLEAN DEFAULT FALSE, | ||||
|     FOREIGN KEY (room_id) REFERENCES rooms(id) | ||||
| ); | ||||
| @@ -34,7 +34,7 @@ CREATE TABLE word_cards ( | ||||
|     id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
|     room_id TEXT NOT NULL, | ||||
|     word TEXT NOT NULL, | ||||
|     color TEXT, | ||||
|     color TEXT NOT NULL DEFAULT '', | ||||
|     revealed BOOLEAN DEFAULT FALSE, | ||||
|     mime_view BOOLEAN DEFAULT FALSE, | ||||
|     FOREIGN KEY (room_id) REFERENCES rooms(id) | ||||
| @@ -52,11 +52,21 @@ CREATE TABLE actions ( | ||||
|     id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
|     room_id TEXT NOT NULL, | ||||
|     actor TEXT NOT NULL, | ||||
|     actor_color TEXT, | ||||
|     actor_color TEXT NOT NULL DEFAULT '', | ||||
|     action_type TEXT NOT NULL, | ||||
|     word TEXT, | ||||
|     word_color TEXT, | ||||
|     number_associated TEXT, -- for clues | ||||
|     word TEXT NOT NULL DEFAULT '', | ||||
|     word_color TEXT NOT NULL DEFAULT '', | ||||
|     number_associated TEXT NOT NULL DEFAULT '', -- for clues | ||||
|     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | ||||
|     FOREIGN KEY (room_id) REFERENCES rooms(id) | ||||
| ); | ||||
|  | ||||
| CREATE TABLE settings ( | ||||
|     id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
|     room_id TEXT NOT NULL, | ||||
|     language TEXT NOT NULL DEFAULT 'en', | ||||
|     room_pass TEXT NOT NULL DEFAULT '', | ||||
|     turn_time INTEGER NOT NULL DEFAULT 60, -- seconds | ||||
|     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | ||||
|     FOREIGN KEY (room_id) REFERENCES rooms(id) | ||||
| ); | ||||
|   | ||||
| @@ -417,7 +417,8 @@ func (rr *RoomReq) CreateRoom(creator string) *Room { | ||||
| // ==== | ||||
|  | ||||
| type FullInfo struct { | ||||
| 	State     *UserState | ||||
| 	// State     *UserState | ||||
| 	State     *Player | ||||
| 	Room      *Room | ||||
| 	List      []*Room | ||||
| 	LinkLogin string // room_id | ||||
| @@ -433,7 +434,7 @@ func (f *FullInfo) ExitRoom() *Room { | ||||
| 	if f.Room.BlueTeam.Mime == f.State.Username { | ||||
| 		f.Room.BlueTeam.Mime = "" | ||||
| 	} | ||||
| 	f.State.ExitRoom() | ||||
| 	// f.State.ExitRoom() | ||||
| 	resp := f.Room | ||||
| 	f.Room = nil | ||||
| 	return resp | ||||
|   | ||||
| @@ -6,14 +6,14 @@ import ( | ||||
| ) | ||||
|  | ||||
| type PlayersRepo interface { | ||||
| 	GetPlayer(roomID, username string) (*models.Player, error) | ||||
| 	GetPlayerByName(username string) (*models.Player, error) | ||||
| 	AddPlayer(player *models.Player) error | ||||
| 	DeletePlayer(roomID, username string) error | ||||
| } | ||||
|  | ||||
| func (p *RepoProvider) GetPlayer(roomID, username string) (*models.Player, error) { | ||||
| func (p *RepoProvider) GetPlayerByName(username string) (*models.Player, error) { | ||||
| 	var player models.Player | ||||
| 	err := p.DB.GetContext(context.Background(), &player, "SELECT id, room_id, username, team, role, is_bot FROM players WHERE room_id = ? AND username = ?", roomID, username) | ||||
| 	err := p.DB.GetContext(context.Background(), &player, "SELECT id, room_id, username, team, role, is_bot FROM players WHERE username = ?", username) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder