Skip to content

Commit 3a156c7

Browse files
chore: wip
1 parent 40bff7c commit 3a156c7

File tree

3 files changed

+41
-11
lines changed

3 files changed

+41
-11
lines changed

storage/framework/core/database/src/drivers/defaults/traits.ts

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,10 @@ export async function createTaggableTable(): Promise<void> {
9898
migrationContent += ` .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n`
9999
migrationContent += ` .addColumn('name', 'varchar(255)', col => col.notNull())\n`
100100
migrationContent += ` .addColumn('slug', 'varchar(255)', col => col.notNull().unique())\n`
101+
migrationContent += ` .addColumn('type', 'varchar(255)')\n`
102+
migrationContent += ` .addColumn('color', 'varchar(255)')\n`
101103
migrationContent += ` .addColumn('description', 'text')\n`
102104
migrationContent += ` .addColumn('is_active', 'boolean', col => col.defaultTo(true))\n`
103-
migrationContent += ` .addColumn('taggable_type', 'varchar(255)', col => col.notNull())\n`
104105
migrationContent += ` .addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql.raw('CURRENT_TIMESTAMP')))\n`
105106
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
106107
migrationContent += ` .execute()\n\n`
@@ -112,9 +113,15 @@ export async function createTaggableTable(): Promise<void> {
112113
migrationContent += ` .execute()\n\n`
113114

114115
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`
116123
migrationContent += ` .on('taggables')\n`
117-
migrationContent += ` .columns(['taggable_type'])\n`
124+
migrationContent += ` .column('name')\n`
118125
migrationContent += ` .execute()\n\n`
119126

120127
migrationContent += `}\n`
@@ -125,6 +132,8 @@ export async function createTaggableTable(): Promise<void> {
125132

126133
Bun.write(migrationFilePath, migrationContent)
127134

135+
log.success(`Created migration: ${italic(migrationFileName)}`)
136+
128137
await createTaggableModelsTable()
129138
}
130139

@@ -142,9 +151,10 @@ export async function createPostgresTaggableTable(): Promise<void> {
142151
migrationContent += ` .addColumn('id', 'serial', col => col.primaryKey())\n`
143152
migrationContent += ` .addColumn('name', 'varchar(255)', col => col.notNull())\n`
144153
migrationContent += ` .addColumn('slug', 'varchar(255)', col => col.notNull().unique())\n`
154+
migrationContent += ` .addColumn('type', 'varchar(255)')\n`
155+
migrationContent += ` .addColumn('color', 'varchar(255)')\n`
145156
migrationContent += ` .addColumn('description', 'text')\n`
146157
migrationContent += ` .addColumn('is_active', 'boolean', col => col.defaultTo(true))\n`
147-
migrationContent += ` .addColumn('taggable_type', 'varchar(255)', col => col.notNull())\n`
148158
migrationContent += ` .addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql.raw('CURRENT_TIMESTAMP')))\n`
149159
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
150160
migrationContent += ` .execute()\n\n`
@@ -156,9 +166,15 @@ export async function createPostgresTaggableTable(): Promise<void> {
156166
migrationContent += ` .execute()\n\n`
157167

158168
migrationContent += ` await db.schema\n`
159-
migrationContent += ` .createIndex('idx_taggables_polymorphic')\n`
169+
migrationContent += ` .createIndex('idx_taggables_type')\n`
160170
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`
162178
migrationContent += ` .execute()\n\n`
163179

164180
migrationContent += `}\n`
@@ -168,6 +184,8 @@ export async function createPostgresTaggableTable(): Promise<void> {
168184
const migrationFilePath = path.userMigrationsPath(migrationFileName)
169185

170186
Bun.write(migrationFilePath, migrationContent)
187+
188+
log.success(`Created migration: ${italic(migrationFileName)}`)
171189
}
172190

173191
// SQLite/MySQL version
@@ -468,6 +486,12 @@ export async function createTaggableModelsTable(): Promise<void> {
468486
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
469487
migrationContent += ` .execute()\n\n`
470488

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+
471495
migrationContent += ` await db.schema\n`
472496
migrationContent += ` .createIndex('idx_taggable_models_tag')\n`
473497
migrationContent += ` .on('taggable_models')\n`
@@ -517,6 +541,12 @@ export async function createPostgresTaggableModelsTable(): Promise<void> {
517541
migrationContent += ` .addColumn('updated_at', 'timestamp')\n`
518542
migrationContent += ` .execute()\n\n`
519543

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+
520550
migrationContent += ` await db.schema\n`
521551
migrationContent += ` .createIndex('idx_taggable_models_tag')\n`
522552
migrationContent += ` .on('taggable_models')\n`
@@ -545,8 +575,6 @@ export async function createPostgresTaggableModelsTable(): Promise<void> {
545575
Bun.write(migrationFilePath, migrationContent)
546576

547577
log.success(`Created migration: ${italic(migrationFileName)}`)
548-
549-
await createPostgresTaggableModelsTable()
550578
}
551579

552580
export async function createQueryLogsTable(): Promise<void> {

storage/framework/defaults/types/defaults.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,10 +326,10 @@ export interface Taggables {
326326
id: number
327327
name: string
328328
slug: string
329+
type?: string
330+
color?: string
329331
description: string
330332
is_active: boolean
331-
taggable_id: number
332-
taggable_type: string
333333
postCount: number
334334
created_at: string
335335
updated_at: string

storage/framework/orm/src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,18 @@ export interface TaggableTable {
114114
id?: number
115115
name: string
116116
slug: string
117+
type?: string
118+
color?: string
117119
description?: string
118120
is_active: boolean
119-
taggable_type: string
120121
created_at?: string
121122
updated_at?: string
122123
}
123124

124125
export interface TaggableModelsTable {
125126
id?: number
126127
tag_id: number
128+
taggable_id: number
127129
taggable_type: string
128130
created_at?: string
129131
updated_at?: string

0 commit comments

Comments
 (0)