Skip to content

Commit a53e73c

Browse files
committed
chore: wip
1 parent 59a5af8 commit a53e73c

File tree

4 files changed

+88
-65
lines changed

4 files changed

+88
-65
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { log } from '@stacksjs/logging'
22
import { generateModelFiles } from '@stacksjs/orm'
33

4-
log.info('Generating model files...')
4+
log.info('Generating Model files...')
55
await generateModelFiles()
66
log.success('Model files generated successfully')

storage/framework/core/buddy/src/commands/generate.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,17 @@ export function generate(buddy: CLI) {
148148
.action(async (options: GeneratorOptions) => {
149149
const perf = await intro('buddy generate:model-files')
150150

151-
await generateModelFiles()
152-
153-
outro('Generated model files', {
154-
startTime: perf,
155-
useSeconds: true,
156-
})
151+
try {
152+
await generateModelFiles()
153+
154+
outro('Generated model files', {
155+
startTime: perf,
156+
useSeconds: true,
157+
})
158+
} catch (error) {
159+
log.error('There was an error generating your model files', error)
160+
process.exit(ExitCode.FatalError)
161+
}
157162
})
158163

159164
buddy

storage/framework/core/logging/src/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ export interface Log {
7676
// prompt: Prompt
7777
// start: logger.Start
7878
// box: logger.Box
79-
start: any
80-
box: any
79+
// start: any
80+
// box: any
8181
dump: (...args: any[]) => void
8282
dd: (...args: any[]) => void
8383
echo: (...args: any[]) => void

storage/framework/core/orm/src/utils.ts

+74-56
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { generator, parser, traverse } from '@stacksjs/build'
2+
import { log } from '@stacksjs/logging'
23
import { path } from '@stacksjs/path'
3-
import { fs } from '@stacksjs/storage'
4+
import { fs, glob } from '@stacksjs/storage'
45
import { plural, singular, snakeCase } from '@stacksjs/strings'
56
import type { Attributes, FieldArrayElement, Model, ModelElement, RelationConfig } from '@stacksjs/types'
67

@@ -553,7 +554,7 @@ export async function generateApiRoutes(modelFiles: string[]) {
553554
let routeString = `import { route } from '@stacksjs/router'\n\n\n`
554555

555556
for (const modelFile of modelFiles) {
556-
log.debug(`Processing model file: ${modelFile}`)
557+
log.info(`Processing model file: ${modelFile}`)
557558
let middlewareString = ''
558559
const model = (await import(modelFile)).default as Model
559560
const modelName = getModelName(model, modelFile)
@@ -620,19 +621,27 @@ export async function generateApiRoutes(modelFiles: string[]) {
620621

621622
export async function deleteExistingModels(modelStringFile?: string) {
622623
const typePath = path.frameworkPath(`orm/src/types.ts`)
623-
if (fs.existsSync(typePath)) await Bun.$`rm ${typePath}`
624+
if (fs.existsSync(typePath)) await fs.promises.unlink(typePath)
624625

625626
if (modelStringFile) {
626627
const modelPath = path.frameworkPath(`orm/src/models/${modelStringFile}.ts`)
627-
await Bun.$`rm ${modelPath}`
628+
if (fs.existsSync(modelPath)) await fs.promises.unlink(modelPath)
628629

629630
return
630631
}
631632

632-
const modelPaths = glob.sync(path.frameworkPath(`orm/src/models/*.ts`))
633-
for (const modelPath of modelPaths) {
634-
if (fs.existsSync(modelPath)) await Bun.$`rm ${modelPath}`
635-
}
633+
const modelPaths = glob.sync(path.frameworkPath(`orm/src/models/*.ts`)).sort() // handle them alphabetically
634+
await Promise.all(
635+
modelPaths.map(async (modelPath) => {
636+
if (fs.existsSync(modelPath)) {
637+
log.info(`Deleting Model: ${modelPath}`)
638+
await fs.promises.unlink(modelPath)
639+
log.success(`Deleted Model: ${modelPath}`)
640+
}
641+
}),
642+
)
643+
644+
return
636645
}
637646

638647
export async function deleteExistingOrmActions(modelStringFile?: string) {
@@ -1638,54 +1647,63 @@ export async function generateModelString(
16381647
}
16391648

16401649
export async function generateModelFiles(modelStringFile?: string): Promise<void> {
1641-
log.info('Generating model files...')
1642-
log.info('Deleting old model files...')
1643-
await deleteExistingModels(modelStringFile)
1644-
log.success('Deleted old model files')
1645-
log.info('Deleting old model actions...')
1646-
await deleteExistingOrmActions(modelStringFile)
1647-
log.success('Deleted old model actions')
1648-
log.info('Deleting old model name types...')
1649-
await deleteExistingModelNameTypes()
1650-
log.success('Deleted old model name types')
1651-
log.info('Deleting old model request...')
1652-
await deleteExistingModelRequest(modelStringFile)
1653-
log.success('Deleted old model request')
1654-
log.info('Deleting old model routes...')
1655-
await deleteExistingOrmRoute()
1656-
log.success('Deleted old model routes')
1657-
1658-
log.info('Writing model names...')
1659-
await writeModelNames()
1660-
log.success('Wrote model names')
1661-
log.info('Writing model request...')
1662-
await writeModelRequest()
1663-
log.success('Wrote model request')
1664-
1665-
const modelFiles = glob.sync(path.userModelsPath('**/*.ts'))
1666-
log.info('Generating API routes...')
1667-
await generateApiRoutes(modelFiles)
1668-
log.success('Generated API routes')
1669-
1670-
for (const modelFile of modelFiles) {
1671-
if (modelStringFile && modelStringFile !== modelFile) continue
1672-
1673-
log.debug(`Processing model file: ${modelFile}`)
1650+
try {
1651+
log.info('Cleanup of older Models...')
1652+
await deleteExistingModels(modelStringFile)
1653+
log.success('Deleted Models')
1654+
1655+
log.debug('Deleting old ORM Actions...')
1656+
await deleteExistingOrmActions(modelStringFile)
1657+
log.success('Deleted ORM Actions')
1658+
1659+
log.debug('Deleting old Model Name types...')
1660+
await deleteExistingModelNameTypes()
1661+
log.success('Deleted Model Name types')
1662+
1663+
log.info('Deleting old Model Requests...')
1664+
await deleteExistingModelRequest(modelStringFile)
1665+
log.success('Deleted Model Requests')
1666+
1667+
log.info('Deleting old Model Routes...')
1668+
await deleteExistingOrmRoute()
1669+
log.success('Deleted Model Routes')
1670+
1671+
log.info('Writing Model Names...')
1672+
await writeModelNames()
1673+
log.success('Wrote Model Names')
1674+
1675+
log.info('Writing Model Requests...')
1676+
await writeModelRequest()
1677+
log.success('Wrote Rodel Requests')
1678+
1679+
log.info('Generating API Routes...')
1680+
const modelFiles = glob.sync(path.userModelsPath('**/*.ts'))
1681+
await generateApiRoutes(modelFiles)
1682+
log.success('Generated API Routes')
1683+
1684+
for (const modelFile of modelFiles) {
1685+
if (modelStringFile && modelStringFile !== modelFile) continue
1686+
log.info(`Processing Model: ${modelFile}`)
1687+
1688+
const model = (await import(modelFile)).default as Model
1689+
const tableName = getTableName(model, modelFile)
1690+
const modelName = getModelName(model, modelFile)
1691+
const file = Bun.file(path.frameworkPath(`orm/src/models/${modelName}.ts`))
1692+
const fields = await extractFields(model, modelFile)
1693+
const classString = await generateModelString(tableName, modelName, model, fields)
1694+
1695+
const writer = file.writer()
1696+
log.info(`Writing API Endpoints for: ${modelName}`)
1697+
writer.write(classString)
1698+
log.success(`Wrote API endpoints for: ${modelName}`)
1699+
await writer.end()
1700+
}
16741701

1675-
const model = (await import(modelFile)).default as Model
1676-
const tableName = getTableName(model, modelFile)
1677-
const modelName = getModelName(model, modelFile)
1678-
const file = Bun.file(path.frameworkPath(`orm/src/models/${modelName}.ts`))
1679-
const fields = await extractFields(model, modelFile)
1680-
const classString = await generateModelString(tableName, modelName, model, fields)
1681-
const writer = file.writer()
1682-
log.info(`Writing API endpoints for: ${modelName}`)
1683-
writer.write(classString)
1684-
log.success(`Wrote API endpoints for: ${modelName}`)
1685-
await writer.end()
1702+
log.info('Generating Query Builder types...')
1703+
await generateKyselyTypes()
1704+
log.success('Generated Query Builder types')
1705+
} catch (error) {
1706+
log.error('There was an error generating your model files', error)
1707+
process.exit(ExitCode.FatalError)
16861708
}
1687-
1688-
log.info('Generating Query Builder types...')
1689-
await generateKyselyTypes()
1690-
log.success('Generated Query Builder types')
16911709
}

0 commit comments

Comments
 (0)