This commit is contained in:
2026-09-04 13:46:18 +03:00
parent f5c9132422
commit de5a6ed3a2
7 changed files with 181 additions and 3 deletions
@@ -1,5 +1,6 @@
import type { HttpContext } from '@adonisjs/core/http'
import CustomField from '#base_modules/CustomField/model/custom_field'
import { createCustomFieldValidator } from '#base_modules/CustomField/validators/custom_field_create_validator'
export default class CustomFieldsController {
/**
@@ -13,4 +14,27 @@ export default class CustomFieldsController {
const fields = await CustomField.query().where('tenant_id', tenant.id).orderBy('id', 'asc')
return response.ok({ data: fields })
}
/**
* @summary Create custom-field metadata for contacts in the current tenant
* @requestBody {"entity_type":"contact","name":"Customer tier","key":"customer_tier","field_type":"select","required":true,"options":{"values":["bronze","silver","gold"]}}
* @responseBody 201 - {"data":{"id":1,"entity_type":"contact","name":"Customer tier","key":"customer_tier","field_type":"select","required":true,"options":{"values":["bronze","silver","gold"]},"status":"active"}}
* @responseBody 401 - {"message":"Unauthorized"}
* @responseBody 403 - {"code":"E_TENANT_ACCESS_DENIED","message":"You do not have access to this tenant"}
* @responseBody 422 - {"errors":[{"message":"The entity_type field must be contact","rule":"literal","field":"entity_type"}]}
*/
public async store({ request, response, tenant }: HttpContext) {
const input = await createCustomFieldValidator.validate(request.all())
const field = await CustomField.create({
tenantId: tenant.id,
entityType: input.entity_type,
name: input.name,
key: input.key,
fieldType: input.field_type,
required: input.required ?? false,
options: input.options ?? null,
status: 'active',
})
return response.created({ data: field })
}
}