sunrise-cms/database/getContractTypeFields.ts

58 lines
1.5 KiB
TypeScript

import sqlite from 'better-sqlite3'
import { sunriseDB } from '../helpers/database.helpers.js'
import type { ContractTypeField } from '../types/record.types.js'
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
export default function getContractTypeFields(
contractTypeId?: number,
connectedDatabase?: sqlite.Database
): ContractTypeField[] {
const database = connectedDatabase ?? sqlite(sunriseDB)
const sqlParameters: unknown[] = []
if ((contractTypeId ?? -1) !== -1) {
sqlParameters.push(contractTypeId)
}
const contractTypeFields = database
.prepare(
`select contractTypeFieldId, contractTypeField, fieldType,
fieldValues, isRequired, pattern, minLength, maxLength, orderNumber
from ContractTypeFields
where recordDelete_timeMillis is null
${
(contractTypeId ?? -1) === -1
? ' and contractTypeId is null'
: ' and contractTypeId = ?'
}
order by orderNumber, contractTypeField`
)
.all(sqlParameters) as ContractTypeField[]
let expectedOrderNumber = 0
for (const contractTypeField of contractTypeFields) {
if (contractTypeField.orderNumber !== expectedOrderNumber) {
updateRecordOrderNumber(
'ContractTypeFields',
contractTypeField.contractTypeFieldId,
expectedOrderNumber,
database
)
contractTypeField.orderNumber = expectedOrderNumber
}
expectedOrderNumber += 1
}
if (connectedDatabase === undefined) {
database.close()
}
return contractTypeFields
}