UNPKG

gen-jhipster

Version:

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

192 lines (161 loc) 5.5 kB
/** * Copyright 2013-2024 the original author or authors from the JHipster project. * * This file is part of the JHipster project, see https://www.jhipster.tech/ * for more information. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import type { IsNever } from 'type-fest'; import type { Entity as BaseEntity } from '../base/entity.js'; import type { ServerEntity } from '../../../generators/server/types.js'; import type { Field as BaseField } from '../base/field.js'; import type { Relationship as BaseRelationship } from '../base/relationship.js'; import type { FieldType } from '../../application/field-types.ts'; import type { FakerWithRandexp } from '../../../generators/base/support/faker.ts'; import type { PartialAngularEntity } from '../../../generators/angular/types-partial.js'; import type { Field } from './field.js'; import type { Relationship } from './relationship.js'; export type PrimaryKey<F extends BaseField = Field> = { name: string; fields: F[]; derivedFields: F[]; type: FieldType; composite: boolean; derived: boolean; javaValueGenerator?: string; javaBuildSpecification?: string; tsSampleValues?: (string | number)[]; javaSampleValues?: string[]; }; export interface Entity<F extends BaseField = Field, R extends BaseRelationship = never> extends Omit<Required<BaseEntity<F>>, 'relationships'>, ServerEntity, PartialAngularEntity { changelogDateForRecent: any; /** @experimental */ auditableEntity?: boolean; relationships: (IsNever<R> extends true ? Relationship : R)[]; otherRelationships: (IsNever<R> extends true ? Relationship : R)[]; primaryKey?: PrimaryKey<F>; builtIn?: boolean; builtInUser?: boolean; builtInUserManagement?: boolean; builtInAuthority?: boolean; adminEntity?: boolean; entityAuthority?: string; entityReadAuthority?: string; hasCyclicRequiredRelationship?: boolean; entityJavadoc?: string; entityNameCapitalized: string; entityClass: string; entityInstance: string; entityTableName: string; entityNamePlural: string; entityAbsoluteClass: string; entityAbsoluteFolder: string; entityUnderscoredName: string; dtoClass?: string; dtoInstance?: string; persistClass: string; persistInstance: string; restClass: string; restInstance: string; entityNamePluralizedAndSpinalCased: string; entityClassPlural: string; entityInstancePlural: string; entityI18nVariant: string; entityClassHumanized: string; entityClassPluralHumanized: string; entityFileName: string; entityFolderName: string; entityModelFileName: string; entityParentPathAddition: string; entityPluralFileName: string; entityServiceFileName: string; /** Generate only the model at client side for relationships. */ entityClientModelOnly?: boolean; entityAngularName: string; entityAngularNamePlural: string; entityReactName: string; entityApiUrl: string; entityStateName: string; entityUrl: string; entityTranslationKey: string; entityTranslationKeyMenu: string; i18nKeyPrefix: string; i18nAlertHeaderPrefix: string; entityApi: string; entityPage: string; anyFieldIsBigDecimal: boolean; /** * Any file is of type Bytes or ByteBuffer */ anyFieldIsBlobDerived: boolean; entityJavaFilterableProperties: any[]; entityJavaCustomFilters: any[]; /** * Any field is of type ZonedDateTime, Instant or LocalDate */ anyFieldIsDateDerived: boolean; anyFieldIsDuration: boolean; anyFieldIsInstant: boolean; anyFieldIsLocalDate: boolean; /** * Any field is of type ZonedDateTime or Instant */ anyFieldIsTimeDerived: boolean; anyFieldIsUUID: boolean; anyFieldIsUUIDString: boolean; anyFieldIsZonedDateTime: boolean; anyFieldHasDocumentation: boolean; anyFieldHasImageContentType: boolean; anyFieldHasTextContentType: boolean; /** * Any field has image or any contentType */ anyFieldHasFileBasedContentType: boolean; /** * Any relationship is required or id */ anyRelationshipIsRequired: boolean; hasRelationshipWithBuiltInUser: boolean; paginationPagination: boolean; paginationInfiniteScroll: boolean; paginationNo: boolean; serviceClass: boolean; serviceImpl: boolean; serviceNo: boolean; dtoMapstruct: boolean; dtoAny: boolean; propertyJavaFilteredType?: string; resetFakerSeed(suffix?: string): void; generateFakeData?: (type?: any) => any; faker: FakerWithRandexp; tsSampleWithPartialData?: string; tsSampleWithRequiredData?: string; tsSampleWithFullData?: string; tsSampleWithNewData?: string; tsPrimaryKeySamples?: string[]; entityAngularJSSuffix?: string; saveUserSnapshot?: boolean; /** Properties from application required for entities published through gateways */ useMicroserviceJson?: boolean; microserviceAppName?: string; applicationType?: string; microfrontend?: boolean; } export interface UserEntity extends Entity { hasImageField?: boolean; adminUserDto?: string; }