44 lines
1.5 KiB
Handlebars
Executable File
44 lines
1.5 KiB
Handlebars
Executable File
import { BaseModel, column{{#if imports}}, {{imports}}{{/if}} } from '@adonisjs/lucid/orm'
|
|
import type { BelongsTo, HasMany } from '@adonisjs/lucid/types/relations'
|
|
import { DateTime } from 'luxon'
|
|
import { {{modelSchemaName}} } from '#database/schema'
|
|
{{#if hasPassword}}
|
|
import hash from '@adonisjs/core/services/hash'
|
|
import { beforeSave } from '@adonisjs/lucid/orm'
|
|
{{/if}}
|
|
|
|
export default class {{pascalCaseName}} extends {{modelSchemaName}} {
|
|
public static table = '{{tableName}}'
|
|
|
|
static searchable = {
|
|
string: [{{#each columns}}{{#if (and (eq validatorType "string") (not isPassword))}}'{{camelCase}}'{{#unless @last}}, {{/unless}}{{/if}}{{/each}}],
|
|
number: [{{#each columns}}{{#if (eq validatorType "number")}}'{{camelCase}}'{{#unless @last}}, {{/unless}}{{/if}}{{/each}}],
|
|
}
|
|
|
|
{{#each columns}}
|
|
{{#if isPrimary}}
|
|
@column({ isPrimary: true, columnName: '{{name}}', serializeAs: '{{name}}' })
|
|
declare {{camelCase}}: {{type}}
|
|
{{else if isDateTime}}
|
|
@column.dateTime({ autoCreate: true{{#if (eq name "updated_at")}}, autoUpdate: true{{/if}}, columnName: '{{name}}', serializeAs: '{{name}}' })
|
|
declare {{camelCase}}: DateTime | null
|
|
{{else}}
|
|
@column({ columnName: '{{name}}', serializeAs: '{{name}}' })
|
|
declare {{camelCase}}: {{type}}
|
|
{{/if}}
|
|
{{/each}}
|
|
|
|
{{#each relationships}}
|
|
{{{this}}}
|
|
{{/each}}
|
|
|
|
{{#if hasPassword}}
|
|
@beforeSave()
|
|
static async hashPassword(model: {{className}}) {
|
|
if (model.$dirty.password) {
|
|
model.password = await hash.make(model.password)
|
|
}
|
|
}
|
|
{{/if}}
|
|
}
|