This commit is contained in:
2026-09-02 09:19:43 +03:00
parent 74cb5b6176
commit 962f489142
34 changed files with 1190 additions and 124 deletions
@@ -0,0 +1,16 @@
import type { HttpContext } from '@adonisjs/core/http'
import CustomField from '#base_modules/CustomField/model/custom_field'
export default class CustomFieldsController {
/**
* @summary List custom fields in the current tenant
* @responseBody 200 - {"data":[]}
* @responseBody 401 - {"message":"Unauthorized"}
* @responseBody 400 - {"code":"E_TENANT_REQUIRED","message":"X-Tenant-Id header is required"}
* @responseBody 403 - {"code":"E_TENANT_ACCESS_DENIED","message":"You do not have access to this tenant"}
*/
public async index({ response, tenant }: HttpContext) {
const fields = await CustomField.query().where('tenant_id', tenant.id).orderBy('id', 'asc')
return response.ok({ data: fields })
}
}
@@ -0,0 +1,17 @@
import { BaseModel, column } from '@adonisjs/lucid/orm'
import { DateTime } from 'luxon'
export default class CustomField extends BaseModel {
@column({ isPrimary: true }) declare id: number
@column({ columnName: 'tenant_id', serializeAs: null }) declare tenantId: number
@column({ columnName: 'entity_type', serializeAs: 'entity_type' }) declare entityType: string
@column() declare name: string
@column() declare key: string
@column({ columnName: 'field_type', serializeAs: 'field_type' }) declare fieldType: string
@column() declare required: boolean
@column() declare options: Record<string, unknown> | null
@column() declare status: string
@column.dateTime({ autoCreate: true, serializeAs: null }) declare createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true, serializeAs: null })
declare updatedAt: DateTime
}
@@ -0,0 +1,12 @@
import router from '@adonisjs/core/services/router'
import { middleware } from '#start/kernel'
const CustomFieldsController = () =>
import('#base_modules/CustomField/controller/custom_fields_controller')
router
.group(() => {
router.get('/', [CustomFieldsController, 'index'])
})
.prefix('/api/custom-fields')
.use([middleware.auth(), middleware.tenant()])