session entry
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
CREATE TABLE `session_entry` (
|
||||||
|
`id` text PRIMARY KEY,
|
||||||
|
`session_id` text NOT NULL,
|
||||||
|
`type` text NOT NULL,
|
||||||
|
`time_created` integer NOT NULL,
|
||||||
|
`time_updated` integer NOT NULL,
|
||||||
|
`data` text NOT NULL,
|
||||||
|
CONSTRAINT `fk_session_entry_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
--> statement-breakpoint
|
||||||
|
CREATE INDEX `session_entry_session_idx` ON `session_entry` (`session_id`);--> statement-breakpoint
|
||||||
|
CREATE INDEX `session_entry_session_type_idx` ON `session_entry` (`session_id`,`type`);--> statement-breakpoint
|
||||||
|
CREATE INDEX `session_entry_time_created_idx` ON `session_entry` (`time_created`);
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -2,10 +2,10 @@ import { NotFoundError, eq, and, sql } from "../storage/db"
|
|||||||
import { SyncEvent } from "@/sync"
|
import { SyncEvent } from "@/sync"
|
||||||
import { Session } from "./index"
|
import { Session } from "./index"
|
||||||
import { MessageV2 } from "./message-v2"
|
import { MessageV2 } from "./message-v2"
|
||||||
import { SessionTable, MessageTable, PartTable } from "./session.sql"
|
import { SessionTable, MessageTable, PartTable, SessionEntryTable } from "./session.sql"
|
||||||
import { ProjectTable } from "../project/project.sql"
|
|
||||||
import { Log } from "../util/log"
|
import { Log } from "../util/log"
|
||||||
import { DateTime } from "effect"
|
import { DateTime } from "effect"
|
||||||
|
import { SessionEntry } from "@/v2/session-entry"
|
||||||
|
|
||||||
const log = Log.create({ service: "session.projector" })
|
const log = Log.create({ service: "session.projector" })
|
||||||
|
|
||||||
@@ -133,33 +133,4 @@ export default [
|
|||||||
log.warn("ignored late part update", { partID: id, messageID, sessionID })
|
log.warn("ignored late part update", { partID: id, messageID, sessionID })
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// Experimental
|
|
||||||
SyncEvent.project(MessageV2.Event.PartUpdated, (db, data) => {
|
|
||||||
/*
|
|
||||||
const id = SessionEntry.ID.make(data.part.id.replace("prt", "ent"))
|
|
||||||
switch (data.part.type) {
|
|
||||||
case "text":
|
|
||||||
db.insert(SessionEntryTable)
|
|
||||||
.values({
|
|
||||||
id,
|
|
||||||
session_id: data.sessionID,
|
|
||||||
type: "text",
|
|
||||||
data: new SessionEntry.Text({
|
|
||||||
id,
|
|
||||||
text: data.part.text,
|
|
||||||
type: "text",
|
|
||||||
time: {
|
|
||||||
created: DateTime.makeUnsafe(data.part.time?.start ?? Date.now()),
|
|
||||||
completed: data.part.time?.end ? DateTime.makeUnsafe(data.part.time.end) : undefined,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
time_created: Date.now(),
|
|
||||||
time_updated: Date.now(),
|
|
||||||
})
|
|
||||||
.onConflictDoUpdate({ target: SessionEntryTable.id, set: { data: sql`excluded.data` } })
|
|
||||||
.run()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}),
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ export const TodoTable = sqliteTable(
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
|
||||||
export const SessionEntryTable = sqliteTable(
|
export const SessionEntryTable = sqliteTable(
|
||||||
"session_entry",
|
"session_entry",
|
||||||
{
|
{
|
||||||
@@ -107,7 +106,7 @@ export const SessionEntryTable = sqliteTable(
|
|||||||
.references(() => SessionTable.id, { onDelete: "cascade" }),
|
.references(() => SessionTable.id, { onDelete: "cascade" }),
|
||||||
type: text().notNull(),
|
type: text().notNull(),
|
||||||
...Timestamps,
|
...Timestamps,
|
||||||
data: text({ mode: "json" }).notNull().$type<SessionEntry.Entry>(),
|
data: text({ mode: "json" }).notNull().$type<Omit<SessionEntry.Entry, "type" | "id">>(),
|
||||||
},
|
},
|
||||||
(table) => [
|
(table) => [
|
||||||
index("session_entry_session_idx").on(table.session_id),
|
index("session_entry_session_idx").on(table.session_id),
|
||||||
@@ -115,7 +114,6 @@ export const SessionEntryTable = sqliteTable(
|
|||||||
index("session_entry_time_created_idx").on(table.time_created),
|
index("session_entry_time_created_idx").on(table.time_created),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
*/
|
|
||||||
|
|
||||||
export const PermissionTable = sqliteTable("permission", {
|
export const PermissionTable = sqliteTable("permission", {
|
||||||
project_id: text()
|
project_id: text()
|
||||||
|
|||||||
Reference in New Issue
Block a user