From fbf512c0d2abf535c09b86daf6737349525482a9 Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 15 Dec 2024 00:05:24 -0700 Subject: [PATCH] create event assignment rotation TODO --- cmd/server/.games.go.swp | Bin 16384 -> 16384 bytes cmd/server/games.go | 46 ++++++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/cmd/server/.games.go.swp b/cmd/server/.games.go.swp index 6ee108cc2ed148dd93eb15997b1c1bae7ddb69e6..b4fb854dadcc7a17c7a42e6ce1f6d1b88c3a7931 100644 GIT binary patch delta 1581 zcma*mduSY06u{xLd70U~Y8xL&Np4fy?#9g~u|8_^(2%5Y%}bheW5t?mHq&%vvzyFL zwh5t~RDxKL+Avz7NI|Tos7T|AsMUr-g`gCw@d2XkAAx{iO9U0t3i_M1idI2~{qEd5 z+&TBm;q2t3YjV<6+Fun6w5u)tYT;TXa?pBw@LiRo6P(8gjAX7Foo3%;5u^ z!VF%(5gb6=O?6^Sg6P6_)S(==pcreAg-m>>iF}K%F^3dR;t-uq0}V^0_yy+i5zb-;hj9Q2>_Hdqf%8e5wUjIC=3Hx^Xnj5v z8Sp8mHvW$IUXRzOhC}1gcxb>&>AWh~(6*zwOL^}1Dd*=r)UIuCrhnGd=d1=pLwfJ% zs1uN7prfmKd$$U7bayH}smIKO@`z^W=BN=<&Q>eoAL#ctkLh7g*c|hzKE8;Qh#!lD zJ-T6VT4c9kqSn=^SR|?@Bn2^)Dww#%-{XPbfC-mEEJUu<|$uBvgwt zdR5raL#E#BB;g#T!tt1?kJ+Exk!R1$?w{( zNZjAtxlQah>jL&lUHRI|O4Z%j)Tst_Qzau|%Csq=%#gua?8f>s+o~zCgSW4?*VpW* zOsD$qN2F7BKB6%`G#u4UePW;2-e1$Z<-gu}I2sz)jW#`$)F%Q>Th(xSoqoC0&Zxc9 rK2x*y-v1Zmp?D+S> zy#uAGq_^}^5Ox(_PnmlO8K?bZ) z@LLt)7sl`fVLU(|0=SHeID!)7BNNH^X%ylICK16H`f(3Ibl{RsX@?sLh{xc3A$rjT zFDg-vG87;SPE5rJF^Um6D}N zze$tJR=kTf@K1&?op7g2$jsN*lF2kg$l48bK%xk46vBlpEP@%+nf!!NyudSru@|M- zhGGm8tLF&gDRdl!7Y9Jx%wl-||Pm(uXiL-NpEY|GS4fVBN+xo*EZ^P!gs-qs?^gOfFt|i9&y*L@vZpqf{ aLPeE>*>(&S`ra_B_vG35_D4#0o_ diff --git a/cmd/server/games.go b/cmd/server/games.go index d9328ae..c7ac6f1 100644 --- a/cmd/server/games.go +++ b/cmd/server/games.go @@ -18,23 +18,23 @@ func NewGames(ctx context.Context, db DB) (Games, error) { err := db.Exec(ctx, ` CREATE TABLE IF NOT EXISTS users ( uuid TEXT, - updated DATETIME, + updated DATETIME, name TEXT ); CREATE TABLE IF NOT EXISTS games ( uuid TEXT, - updated DATETIME, + updated DATETIME, name TEXT, - completed DATETIME + completed DATETIME ); CREATE TABLE IF NOT EXISTS players ( user_uuid TEXT, game_uuid TEXT, - updated DATETIME + updated DATETIME ); CREATE TABLE IF NOT EXISTS events ( game_uuid TEXT, - updated DATETIME, + timestamp DATETIME, payload TEXT ); `) @@ -181,10 +181,6 @@ func (games Games) GameState(ctx context.Context, id string) (GameState, error) player.KillWords = v result.Players[k] = player } - // TODO gather current assignees - // TODO get victim's target - // TODO assign victim's target to killer - // TODO randomize everyone else so not the same as before AND not self return nil default: return fmt.Errorf("unknown event type %d: %s", peek.Type, payload) @@ -194,24 +190,44 @@ func (games Games) GameState(ctx context.Context, id string) (GameState, error) }, ` SELECT timestamp, payload FROM events - WHERE game_uuid=? + WHERE game_uuid=? `, id) return result, err } -func (games Games) CreateEventPlayerJoin(ctx context.Context, id string, playerJoin EventPlayerJoin) error { - return io.EOF +func (games Games) CreateEventPlayerJoin(ctx context.Context, id string, player string) error { + return games.createEvent(ctx, id, EventPlayerJoin{ID: player}) } -func (games Games) CreateEventPlayerLeave(ctx context.Context, id string, playerLeave EventPlayerLeave) error { - return io.EOF +func (games Games) CreateEventPlayerLeave(ctx context.Context, id string, player string) error { + return games.createEvent(ctx, id, EventPlayerLeave{ID: player}) } func (games Games) CreateEventGameComplete(ctx context.Context, id string) error { - return io.EOF + return games.createEvent(ctx, id, EventGameComplete{}) } func (games Games) CreateEventAssignmentRotation(ctx context.Context, id string, killer, killed, killWord string) error { + // TODO gather current assignees + // TODO get victim's target + // TODO assign victim's target to killer + // TODO randomize everyone else so not the same as before AND not self return io.EOF + return games.createEvent(ctx, id, v) +} + +func (games Games) createEvent(ctx context.Context, id string, v any) error { + payload, err := json.Marshal(any) + if err != nil { + panic(err) + } + + return games.db.Exec(ctx, ` + INSERT INTO events ( + game_uuid, + timestamp, + payload + ) VALUES (?, ?, ?) + `, id, time.Now(), payload) }