Skip to content

Commit 0ec3b06

Browse files
committed
chore: wip
1 parent 5117a74 commit 0ec3b06

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

.stacks/core/slug/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"typescript": "^4.9.5"
5757
},
5858
"dependencies": {
59+
"@prisma/client": "^4.11.0",
5960
"slugify": "^1.6.5"
6061
}
6162
}

.stacks/core/slug/src/index.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import slugify from 'slugify'
22
import type { Model, ColumnOptions } from '@stacksjs/types'
3+
import { PrismaClient } from '@prisma/client'
4+
5+
const prisma = new PrismaClient()
36

47
export function generateSlug(model: Model, column: string, text: string): string {
58
// Find the field that corresponds to the given column name
@@ -24,6 +27,31 @@ export function generateSlug(model: Model, column: string, text: string): string
2427
return slug
2528
}
2629

30+
async function addSlugColumn(modelName: string, columnName: string): Promise<void> {
31+
const model = (prisma as any)[modelName]
32+
const fields = model._schema.fields
33+
34+
const originalField = fields.find((field: any) => field.dbName === columnName)
35+
36+
const slugField = {
37+
name: `${columnName}_slug`,
38+
type: 'String',
39+
unique: originalField.unique || false,
40+
required: originalField.required || false,
41+
default: '',
42+
}
43+
44+
await prisma.$executeRaw(`ALTER TABLE "${modelName}" ADD COLUMN "${columnName}_slug" VARCHAR(255)`)
45+
46+
const records = await model.findMany()
47+
48+
for (const record of records) {
49+
const originalValue = record[columnName]
50+
const slugValue = slugify(originalValue)
51+
await model.update({ where: { id: record.id }, data: { [`${columnName}_slug`]: slugValue } })
52+
}
53+
}
54+
2755
export {
2856
generateSlug as slug
2957
}

0 commit comments

Comments
 (0)