Add post model and lastviewedat to gamemember
This commit is contained in:
parent
4c7e7f4add
commit
701dfbe179
4 changed files with 36 additions and 6 deletions
|
@ -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
9
server/model/post.go
Normal 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"`
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue