refactor(db): migrate tts_segments to settings_json and update indexes
Switch tts_segments schema to use settings_json (jsonb for Postgres, text for SQLite) instead of settings_hash. Update related indexes and migration SQL. Regenerate Drizzle snapshots to reflect the new structure. This improves flexibility for storing TTS settings and enables more robust segment lookups.
This commit is contained in:
parent
222d221e81
commit
71cef7b540
8 changed files with 2547 additions and 16 deletions
|
|
@ -1,3 +1,4 @@
|
|||
DROP TABLE IF EXISTS "tts_segments" CASCADE;--> statement-breakpoint
|
||||
CREATE TABLE "tts_segments" (
|
||||
"segment_id" text NOT NULL,
|
||||
"user_id" text NOT NULL,
|
||||
|
|
@ -6,7 +7,7 @@ CREATE TABLE "tts_segments" (
|
|||
"document_version" bigint NOT NULL,
|
||||
"segment_index" integer NOT NULL,
|
||||
"locator_json" text,
|
||||
"settings_hash" text NOT NULL,
|
||||
"settings_json" jsonb NOT NULL,
|
||||
"text_hash" text NOT NULL,
|
||||
"text_length" integer DEFAULT 0 NOT NULL,
|
||||
"audio_key" text,
|
||||
|
|
@ -20,8 +21,6 @@ CREATE TABLE "tts_segments" (
|
|||
CONSTRAINT "tts_segments_segment_id_user_id_pk" PRIMARY KEY("segment_id","user_id")
|
||||
);
|
||||
--> statement-breakpoint
|
||||
ALTER TABLE "tts_segments" ADD CONSTRAINT "tts_segments_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX "idx_tts_segments_lookup" ON "tts_segments" USING btree ("user_id","document_id","document_version","settings_hash");
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX "idx_tts_segments_doc_index" ON "tts_segments" USING btree ("user_id","document_id","segment_index");
|
||||
ALTER TABLE "tts_segments" ADD CONSTRAINT "tts_segments_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||
CREATE INDEX "idx_tts_segments_lookup" ON "tts_segments" USING btree ("user_id","document_id","document_version","settings_json");--> statement-breakpoint
|
||||
CREATE INDEX "idx_tts_segments_doc_index" ON "tts_segments" USING btree ("user_id","document_id","segment_index");
|
||||
1289
drizzle/postgres/meta/0001_snapshot.json
Normal file
1289
drizzle/postgres/meta/0001_snapshot.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -12,7 +12,7 @@
|
|||
{
|
||||
"idx": 1,
|
||||
"version": "7",
|
||||
"when": 1777843301471,
|
||||
"when": 1777920947745,
|
||||
"tag": "0001_tts_segments",
|
||||
"breakpoints": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
DROP TABLE IF EXISTS `tts_segments`;--> statement-breakpoint
|
||||
CREATE TABLE `tts_segments` (
|
||||
`segment_id` text NOT NULL,
|
||||
`user_id` text NOT NULL,
|
||||
|
|
@ -6,7 +7,7 @@ CREATE TABLE `tts_segments` (
|
|||
`document_version` integer NOT NULL,
|
||||
`segment_index` integer NOT NULL,
|
||||
`locator_json` text,
|
||||
`settings_hash` text NOT NULL,
|
||||
`settings_json` text NOT NULL,
|
||||
`text_hash` text NOT NULL,
|
||||
`text_length` integer DEFAULT 0 NOT NULL,
|
||||
`audio_key` text,
|
||||
|
|
@ -21,6 +22,5 @@ CREATE TABLE `tts_segments` (
|
|||
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX `idx_tts_segments_lookup` ON `tts_segments` (`user_id`,`document_id`,`document_version`,`settings_hash`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX `idx_tts_segments_doc_index` ON `tts_segments` (`user_id`,`document_id`,`segment_index`);
|
||||
CREATE INDEX `idx_tts_segments_lookup` ON `tts_segments` (`user_id`,`document_id`,`document_version`,`settings_json`);--> statement-breakpoint
|
||||
CREATE INDEX `idx_tts_segments_doc_index` ON `tts_segments` (`user_id`,`document_id`,`segment_index`);
|
||||
1243
drizzle/sqlite/meta/0001_snapshot.json
Normal file
1243
drizzle/sqlite/meta/0001_snapshot.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -12,7 +12,7 @@
|
|||
{
|
||||
"idx": 1,
|
||||
"version": "6",
|
||||
"when": 1777843301472,
|
||||
"when": 1777920947478,
|
||||
"tag": "0001_tts_segments",
|
||||
"breakpoints": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ export const ttsSegments = pgTable('tts_segments', {
|
|||
documentVersion: bigint('document_version', { mode: 'number' }).notNull(),
|
||||
segmentIndex: integer('segment_index').notNull(),
|
||||
locatorJson: text('locator_json'),
|
||||
settingsHash: text('settings_hash').notNull(),
|
||||
settingsJson: jsonb('settings_json').notNull(),
|
||||
textHash: text('text_hash').notNull(),
|
||||
textLength: integer('text_length').notNull().default(0),
|
||||
audioKey: text('audio_key'),
|
||||
|
|
@ -130,6 +130,6 @@ export const ttsSegments = pgTable('tts_segments', {
|
|||
updatedAt: bigint('updated_at', { mode: 'number' }).default(PG_NOW_MS),
|
||||
}, (table) => [
|
||||
primaryKey({ columns: [table.segmentId, table.userId] }),
|
||||
index('idx_tts_segments_lookup').on(table.userId, table.documentId, table.documentVersion, table.settingsHash),
|
||||
index('idx_tts_segments_lookup').on(table.userId, table.documentId, table.documentVersion, table.settingsJson),
|
||||
index('idx_tts_segments_doc_index').on(table.userId, table.documentId, table.segmentIndex),
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ export const ttsSegments = sqliteTable('tts_segments', {
|
|||
documentVersion: integer('document_version').notNull(),
|
||||
segmentIndex: integer('segment_index').notNull(),
|
||||
locatorJson: text('locator_json'),
|
||||
settingsHash: text('settings_hash').notNull(),
|
||||
settingsJson: text('settings_json').notNull(),
|
||||
textHash: text('text_hash').notNull(),
|
||||
textLength: integer('text_length').notNull().default(0),
|
||||
audioKey: text('audio_key'),
|
||||
|
|
@ -130,6 +130,6 @@ export const ttsSegments = sqliteTable('tts_segments', {
|
|||
updatedAt: integer('updated_at').default(SQLITE_NOW_MS),
|
||||
}, (table) => [
|
||||
primaryKey({ columns: [table.segmentId, table.userId] }),
|
||||
index('idx_tts_segments_lookup').on(table.userId, table.documentId, table.documentVersion, table.settingsHash),
|
||||
index('idx_tts_segments_lookup').on(table.userId, table.documentId, table.documentVersion, table.settingsJson),
|
||||
index('idx_tts_segments_doc_index').on(table.userId, table.documentId, table.segmentIndex),
|
||||
]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue