@@ -98,9 +98,10 @@ export async function createTaggableTable(): Promise<void> {
98
98
migrationContent += ` .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n`
99
99
migrationContent += ` .addColumn('name', 'varchar(255)', col => col.notNull())\n`
100
100
migrationContent += ` .addColumn('slug', 'varchar(255)', col => col.notNull().unique())\n`
101
+ migrationContent += ` .addColumn('type', 'varchar(255)')\n`
102
+ migrationContent += ` .addColumn('color', 'varchar(255)')\n`
101
103
migrationContent += ` .addColumn('description', 'text')\n`
102
104
migrationContent += ` .addColumn('is_active', 'boolean', col => col.defaultTo(true))\n`
103
- migrationContent += ` .addColumn('taggable_type', 'varchar(255)', col => col.notNull())\n`
104
105
migrationContent += ` .addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql.raw('CURRENT_TIMESTAMP')))\n`
105
106
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
106
107
migrationContent += ` .execute()\n\n`
@@ -112,9 +113,15 @@ export async function createTaggableTable(): Promise<void> {
112
113
migrationContent += ` .execute()\n\n`
113
114
114
115
migrationContent += ` await db.schema\n`
115
- migrationContent += ` .createIndex('idx_taggable_polymorphic')\n`
116
+ migrationContent += ` .createIndex('idx_taggable_type')\n`
117
+ migrationContent += ` .on('taggables')\n`
118
+ migrationContent += ` .column('type')\n`
119
+ migrationContent += ` .execute()\n\n`
120
+
121
+ migrationContent += ` await db.schema\n`
122
+ migrationContent += ` .createIndex('idx_taggable_name')\n`
116
123
migrationContent += ` .on('taggables')\n`
117
- migrationContent += ` .columns(['taggable_type'] )\n`
124
+ migrationContent += ` .column('name' )\n`
118
125
migrationContent += ` .execute()\n\n`
119
126
120
127
migrationContent += `}\n`
@@ -125,6 +132,8 @@ export async function createTaggableTable(): Promise<void> {
125
132
126
133
Bun . write ( migrationFilePath , migrationContent )
127
134
135
+ log . success ( `Created migration: ${ italic ( migrationFileName ) } ` )
136
+
128
137
await createTaggableModelsTable ( )
129
138
}
130
139
@@ -142,9 +151,10 @@ export async function createPostgresTaggableTable(): Promise<void> {
142
151
migrationContent += ` .addColumn('id', 'serial', col => col.primaryKey())\n`
143
152
migrationContent += ` .addColumn('name', 'varchar(255)', col => col.notNull())\n`
144
153
migrationContent += ` .addColumn('slug', 'varchar(255)', col => col.notNull().unique())\n`
154
+ migrationContent += ` .addColumn('type', 'varchar(255)')\n`
155
+ migrationContent += ` .addColumn('color', 'varchar(255)')\n`
145
156
migrationContent += ` .addColumn('description', 'text')\n`
146
157
migrationContent += ` .addColumn('is_active', 'boolean', col => col.defaultTo(true))\n`
147
- migrationContent += ` .addColumn('taggable_type', 'varchar(255)', col => col.notNull())\n`
148
158
migrationContent += ` .addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql.raw('CURRENT_TIMESTAMP')))\n`
149
159
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
150
160
migrationContent += ` .execute()\n\n`
@@ -156,9 +166,15 @@ export async function createPostgresTaggableTable(): Promise<void> {
156
166
migrationContent += ` .execute()\n\n`
157
167
158
168
migrationContent += ` await db.schema\n`
159
- migrationContent += ` .createIndex('idx_taggables_polymorphic ')\n`
169
+ migrationContent += ` .createIndex('idx_taggables_type ')\n`
160
170
migrationContent += ` .on('taggables')\n`
161
- migrationContent += ` .columns(['taggable_type'])\n`
171
+ migrationContent += ` .column('type')\n`
172
+ migrationContent += ` .execute()\n\n`
173
+
174
+ migrationContent += ` await db.schema\n`
175
+ migrationContent += ` .createIndex('idx_taggables_name')\n`
176
+ migrationContent += ` .on('taggables')\n`
177
+ migrationContent += ` .column('name')\n`
162
178
migrationContent += ` .execute()\n\n`
163
179
164
180
migrationContent += `}\n`
@@ -168,6 +184,8 @@ export async function createPostgresTaggableTable(): Promise<void> {
168
184
const migrationFilePath = path . userMigrationsPath ( migrationFileName )
169
185
170
186
Bun . write ( migrationFilePath , migrationContent )
187
+
188
+ log . success ( `Created migration: ${ italic ( migrationFileName ) } ` )
171
189
}
172
190
173
191
// SQLite/MySQL version
@@ -468,6 +486,12 @@ export async function createTaggableModelsTable(): Promise<void> {
468
486
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
469
487
migrationContent += ` .execute()\n\n`
470
488
489
+ // Add foreign key constraint to taggables table
490
+ migrationContent += ` await db.schema\n`
491
+ migrationContent += ` .alterTable('taggable_models')\n`
492
+ migrationContent += ` .addForeignKeyConstraint('taggable_models_tag_id_foreign', ['tag_id'], 'taggables', ['id'], (cb) => cb.onDelete('cascade'))\n`
493
+ migrationContent += ` .execute()\n\n`
494
+
471
495
migrationContent += ` await db.schema\n`
472
496
migrationContent += ` .createIndex('idx_taggable_models_tag')\n`
473
497
migrationContent += ` .on('taggable_models')\n`
@@ -517,6 +541,12 @@ export async function createPostgresTaggableModelsTable(): Promise<void> {
517
541
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
518
542
migrationContent += ` .execute()\n\n`
519
543
544
+ // Add foreign key constraint to taggables table
545
+ migrationContent += ` await db.schema\n`
546
+ migrationContent += ` .alterTable('taggable_models')\n`
547
+ migrationContent += ` .addForeignKeyConstraint('taggable_models_tag_id_foreign', ['tag_id'], 'taggables', ['id'], (cb) => cb.onDelete('cascade'))\n`
548
+ migrationContent += ` .execute()\n\n`
549
+
520
550
migrationContent += ` await db.schema\n`
521
551
migrationContent += ` .createIndex('idx_taggable_models_tag')\n`
522
552
migrationContent += ` .on('taggable_models')\n`
@@ -545,8 +575,6 @@ export async function createPostgresTaggableModelsTable(): Promise<void> {
545
575
Bun . write ( migrationFilePath , migrationContent )
546
576
547
577
log . success ( `Created migration: ${ italic ( migrationFileName ) } ` )
548
-
549
- await createPostgresTaggableModelsTable ( )
550
578
}
551
579
552
580
export async function createQueryLogsTable ( ) : Promise < void > {
0 commit comments