Files
admin/apps/backend/app/templates/backend/model.hbs
T

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}}
}