UNPKG

generator-begcode

Version:

Spring Boot + Angular/React/Vue in one handy generator

37 lines (36 loc) 2.32 kB
import { isClientField } from './filter-entities.js'; import { generateTestEntityId, generateTsTestEntityForFields, stringifyTsEntity } from './template-utils.js'; import getTypescriptKeyType from './types-utils.js'; export default function prepareEntity() { } const SEED = 'post-prepare-client'; export async function preparePostEntityClientDerivedProperties(entity) { let clientFields = entity.fields.filter(field => isClientField(field)); if (entity.builtInUser) { clientFields = clientFields.filter(field => ['id', 'login'].includes(field.fieldName)); } await entity.resetFakerSeed(`${SEED}-1`); const options = { sep: `\n ` }; const fieldsWithPartialData = clientFields.filter(field => field.id || field.fieldValidationRequired || (!field.transient && entity.faker.datatype.boolean())); entity.tsSampleWithPartialData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithPartialData), options); await entity.resetFakerSeed(`${SEED}-2`); const fieldsWithRequiredData = clientFields.filter(field => field.id || field.fieldValidationRequired); entity.tsSampleWithRequiredData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithRequiredData), options); await entity.resetFakerSeed(`${SEED}-3`); const fieldsWithFullData = clientFields.filter(field => !field.transient); entity.tsSampleWithFullData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithFullData), options); if (entity.primaryKey) { await entity.resetFakerSeed(`${SEED}-4`); const fieldsWithNewData = clientFields.filter(field => !field.id && field.fieldValidationRequired); entity.tsSampleWithNewData = stringifyTsEntity({ ...generateTsTestEntityForFields(fieldsWithNewData), [entity.primaryKey.name]: null, }, options); await entity.resetFakerSeed(`${SEED}-5`); entity.tsKeyType = getTypescriptKeyType(entity.primaryKey.type); entity.primaryKey.tsSampleValues = [generateTestEntityId(entity.primaryKey, 0), generateTestEntityId(entity.primaryKey, 1)]; entity.tsPrimaryKeySamples = [ stringifyTsEntity(generateTsTestEntityForFields(entity.primaryKey.fields)), stringifyTsEntity(generateTsTestEntityForFields(entity.primaryKey.fields)), ]; } }