Add post model and lastviewedat to gamemember

This commit is contained in:
Miguel de la Cruz 2021-09-13 23:39:09 +02:00
parent 4c7e7f4add
commit 701dfbe179
4 changed files with 36 additions and 6 deletions

View file

@ -9,4 +9,5 @@ type GameMember struct {
GameID int `json:"game_id"`
UserID int `json:"user_id"`
Role string `json:"role"`
LastViewedAt int `json:"lastviewedat"`
}

9
server/model/post.go Normal file
View file

@ -0,0 +1,9 @@
package model
type Post struct {
ID int `json:"id"`
UserID int `json:"user_id"`
GameID int `json:"game_id"`
CreatedAt int `json:"createdat"`
Body string `json:"body"`
}

View file

@ -3,14 +3,16 @@ package store
import (
"database/sql"
"fmt"
"time"
sq "github.com/Masterminds/squirrel"
"git.ctrlz.es/mgdelacroix/craban/model"
"git.ctrlz.es/mgdelacroix/craban/utils"
)
var gameColumns = []string{"id", "user_id", "name"}
var gameMemberColumns = []string{"game_id", "user_id", "role"}
var gameMemberColumns = []string{"game_id", "user_id", "role", "lastviewedat"}
type GameStore struct {
Conn *sql.DB
@ -104,7 +106,7 @@ func (gs *GameStore) Create(name string, userID int) (*model.Game, error) {
res, err = gs.Q().Insert("gamemembers").
Columns(gameMemberColumns...).
Values(game.ID, userID, model.RoleGameMaster).
Values(game.ID, userID, model.RoleGameMaster, 0).
Exec()
if err != nil {
return nil, fmt.Errorf("cannot insert gamemember for created game: %w", err)
@ -113,6 +115,14 @@ func (gs *GameStore) Create(name string, userID int) (*model.Game, error) {
return game, nil
}
func (gs *GameStore) UpdateLastViewedAt(gameID, userID int) error {
_, err := gs.Q().Update("gamemembers").
Set("lastviewedat", utils.Millis(time.Now())).
Where(sq.Eq{"game_id": gameID, "user_id": userID}).
Exec()
return err
}
func (gs *GameStore) gameMembersFromRows(rows *sql.Rows) ([]*model.GameMember, error) {
gameMembers := []*model.GameMember{}
@ -123,6 +133,7 @@ func (gs *GameStore) gameMembersFromRows(rows *sql.Rows) ([]*model.GameMember, e
&gameMember.GameID,
&gameMember.UserID,
&gameMember.Role,
&gameMember.LastViewedAt,
)
if err != nil {
return nil, err
@ -181,7 +192,7 @@ func (gs *GameStore) GetMember(gameID, userID int) (*model.GameMember, error) {
func (gs *GameStore) AddMember(gameID, userID int, role string) (*model.GameMember, error) {
_, err := gs.Q().Insert("gamemembers").
Columns(gameMemberColumns...).
Values(gameID, userID, role).
Values(gameID, userID, role, 0).
Exec()
if err != nil {
return nil, fmt.Errorf("cannot insert gamemember: %w", err)

View file

@ -77,9 +77,18 @@ CREATE TABLE IF NOT EXISTS gamemembers (
game_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
role VARCHAR(255) NOT NULL,
lastviewedat INTEGER NOT NULL,
PRIMARY KEY (game_id, user_id)
);
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
game_id INTEGER NOT NULL,
createdat INTEGER NOT NULL,
body TEXT NOT NULL
);
`
_, err := s.Conn.Exec(schema)