PG er autoritativ, SpacetimeDB er varm cache. Frontend snakker kun med SpacetimeDB, worker håndterer toveissynk. Fase 1 — SpacetimeDB-modul: - delete_message med SyncOutbox-event - edit_message reducer - MessageReaction tabell + add/remove_reaction reducers - load_messages med JSON-parsing (erstatter pipe-format) - clear_channel reducer for duplikat-fri warmup - load_reactions reducer Fase 2 — Worker: - warmup.rs: PG→ST oppvarming ved oppstart (100 msg/kanal) - sync.rs: håndter delete/update/reaction actions - Sync-intervall redusert til 1s Fase 3 — Frontend: - spacetime.svelte.ts: ren SpacetimeDB-adapter, ingen PG-hybrid - ChatConnection interface med edit/delete/react metoder - ChatBlock bruker chat.edit/delete/react direkte - PG-adapter som readonly fallback Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
19 lines
574 B
TypeScript
19 lines
574 B
TypeScript
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
|
|
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
|
|
|
|
/* eslint-disable */
|
|
/* tslint:disable */
|
|
import {
|
|
TypeBuilder as __TypeBuilder,
|
|
t as __t,
|
|
type AlgebraicTypeType as __AlgebraicTypeType,
|
|
type Infer as __Infer,
|
|
} from "spacetimedb";
|
|
|
|
export default __t.row({
|
|
id: __t.u64().primaryKey(),
|
|
messageId: __t.string().name("message_id"),
|
|
userId: __t.string().name("user_id"),
|
|
userName: __t.string().name("user_name"),
|
|
reaction: __t.string(),
|
|
});
|