mirror of
https://github.com/qwibitai/nanoclaw.git
synced 2026-06-04 10:14:47 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 95818027b3 | |||
| 9a71fe1d7e | |||
| 4fb22be8da |
+17
-7
@@ -8,6 +8,7 @@
|
||||
import Database from 'better-sqlite3';
|
||||
|
||||
import { INBOUND_SCHEMA, OUTBOUND_SCHEMA } from './schema.js';
|
||||
import { log } from '../log.js';
|
||||
|
||||
/** Apply the inbound or outbound schema to a DB file. Idempotent. */
|
||||
export function ensureSchema(dbPath: string, schema: 'inbound' | 'outbound'): void {
|
||||
@@ -102,14 +103,23 @@ export function insertMessage(
|
||||
trigger?: 0 | 1;
|
||||
},
|
||||
): void {
|
||||
db.prepare(
|
||||
`INSERT INTO messages_in (id, seq, kind, timestamp, status, platform_id, channel_type, thread_id, content, process_after, recurrence, series_id, trigger)
|
||||
const trigger = message.trigger ?? 1;
|
||||
const result = db
|
||||
.prepare(
|
||||
`INSERT OR IGNORE INTO messages_in (id, seq, kind, timestamp, status, platform_id, channel_type, thread_id, content, process_after, recurrence, series_id, trigger)
|
||||
VALUES (@id, @seq, @kind, @timestamp, 'pending', @platformId, @channelType, @threadId, @content, @processAfter, @recurrence, @id, @trigger)`,
|
||||
).run({
|
||||
...message,
|
||||
trigger: message.trigger ?? 1,
|
||||
seq: nextEvenSeq(db),
|
||||
});
|
||||
)
|
||||
.run({
|
||||
...message,
|
||||
trigger,
|
||||
seq: nextEvenSeq(db),
|
||||
});
|
||||
if (result.changes === 0) {
|
||||
log.warn('Duplicate message ID ignored', { id: message.id });
|
||||
if (trigger === 1) {
|
||||
db.prepare(`UPDATE messages_in SET trigger = 1 WHERE id = ? AND trigger = 0`).run(message.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function countDueMessages(db: Database.Database): number {
|
||||
|
||||
Reference in New Issue
Block a user