Fix invalid SQL syntax for index creation.

One of the sql generations mistakenly looked for a field value of '?'.
Whatever code was causing this to occur is no longer an issue. This does
highlight the difficulty of needing to delete or modify faulty migration
files.
This commit is contained in:
themodrnhakr 2025-09-25 15:34:47 -05:00
parent 7cb0621585
commit daa85abc8c
4 changed files with 33 additions and 32 deletions

View File

@ -6,9 +6,9 @@ CREATE TABLE `records` (
);
--> statement-breakpoint
CREATE UNIQUE INDEX `records_record_id_unique` ON `records` (`record_id`);--> statement-breakpoint
CREATE INDEX `chores_index` ON `records` (`record_id`) WHERE type_id = ?;--> statement-breakpoint
CREATE INDEX `project_index` ON `records` (`record_id`) WHERE type_id = ?;--> statement-breakpoint
CREATE INDEX `ticket_index` ON `records` (`record_id`) WHERE type_id = ?;--> statement-breakpoint
CREATE INDEX `chores_index` ON `records` (`record_id`) WHERE type_id = 1;--> statement-breakpoint
CREATE INDEX `project_index` ON `records` (`record_id`) WHERE type_id = 2;--> statement-breakpoint
CREATE INDEX `ticket_index` ON `records` (`record_id`) WHERE type_id = 3;--> statement-breakpoint
CREATE TABLE `record_types` (
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`type` text

View File

@ -1,7 +1,7 @@
{
"version": "6",
"dialect": "sqlite",
"id": "8ed760e9-a6fd-43ca-85d1-987033a5a1e6",
"id": "feb276b9-6e2b-4204-885b-167701a4a707",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"records": {
@ -43,7 +43,7 @@
"record_id"
],
"isUnique": false,
"where": "type_id = ?"
"where": "type_id = 1"
},
"project_index": {
"name": "project_index",
@ -51,7 +51,7 @@
"record_id"
],
"isUnique": false,
"where": "type_id = ?"
"where": "type_id = 2"
},
"ticket_index": {
"name": "ticket_index",
@ -59,7 +59,7 @@
"record_id"
],
"isUnique": false,
"where": "type_id = ?"
"where": "type_id = 3"
}
},
"foreignKeys": {

View File

@ -5,8 +5,8 @@
{
"idx": 0,
"version": "6",
"when": 1758831398886,
"tag": "0000_living_dust",
"when": 1758833816361,
"tag": "0000_wandering_riptide",
"breakpoints": true
}
]

View File

@ -1,32 +1,33 @@
import { integer, text, sqliteTable, index, type IndexBuilder } from "drizzle-orm/sqlite-core";
import { recordTypes } from "./recordTypes";
import { relations, sql } from "drizzle-orm";
import { index, type IndexBuilder, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
import { recordTypes } from "./recordTypes";
type RecordTypeIndexConfig = Array<{
dbId: number,
name: string
}>
dbId: number;
name: string;
}>;
const recordTypeIndexConfig: RecordTypeIndexConfig = [
{dbId: 1, name: "chores"},
{dbId: 2, name: "project"},
{dbId: 3, name: "ticket"},
]
type RecordTypeIndexGenerator = (x: RecordTypeIndexConfig, y) => Array<IndexBuilder>
const recordTypeIndexGenerator: RecordTypeIndexGenerator = (x, y) => x.map(
entry => index(`${entry.name}_index`).on(y.recordId).where(sql`type_id = ${entry.dbId}`)
)
{ dbId: 1, name: "chores" },
{ dbId: 2, name: "project" },
{ dbId: 3, name: "ticket" },
];
type RecordTypeIndexGenerator = (x: RecordTypeIndexConfig, y) => Array<IndexBuilder>;
const recordTypeIndexGenerator: RecordTypeIndexGenerator = (x, y) =>
x.map(
entry => index(`${entry.name}_index`).on(y.recordId).where(sql.raw(`type_id = ${entry.dbId}`)),
);
export const records = sqliteTable("records", {
id: integer("id").primaryKey({ autoIncrement: true }),
recordId: text("record_id").unique().notNull(),
typeId: integer("type_id").notNull().references(() => recordTypes.id)
id: integer("id").primaryKey({ autoIncrement: true }),
recordId: text("record_id").unique().notNull(),
typeId: integer("type_id").notNull().references(() => recordTypes.id),
}, (table) => [
...recordTypeIndexGenerator(recordTypeIndexConfig, table)
])
...recordTypeIndexGenerator(recordTypeIndexConfig, table),
]);
export const recordsRelations = relations(records, ({ one }) => ({
type: one(recordTypes, {
fields: [records.typeId],
references: [recordTypes.id]
})
}))
type: one(recordTypes, {
fields: [records.typeId],
references: [recordTypes.id],
}),
}));