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