UNPKG

hades-cli

Version:
347 lines (346 loc) 23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Properties = void 0; const types_1 = require("./../types"); class Properties { constructor(properties = []) { this.properties = properties; this.timestampFields = ['created_at', 'updated_at', 'deleted_at']; this.deletedAtField = ['deleted_at']; } *[Symbol.iterator]() { for (const property of this.properties) yield property; } get length() { return this.properties.length; } get withoutTimestamps() { return this.properties.filter(property => !this.timestampFields.includes(property.name)); } get withoutDeletedAt() { return this.properties.filter(property => !this.deletedAtField.includes(property.name)); } get withRelationship() { return this.properties.filter(property => property.relationship); } get withRelationshipOneToOne() { return this.properties.filter(property => property.relationship === types_1.SqlRelationship.ONE_TO_ONE); } get withRelationshipOneToOneWithRelationshipField() { return this.withRelationshipOneToOne.filter(property => !!property.relationshipField); } get withRelationshipOneToOneWithoutRelationshipField() { return this.withRelationshipOneToOne.filter(property => !property.relationshipField); } get withRelationshipManyToOne() { return this.properties.filter(property => property.relationship === types_1.SqlRelationship.MANY_TO_ONE); } get withRelationshipOneToMany() { return this.properties.filter(property => property.relationship === types_1.SqlRelationship.ONE_TO_MANY); } get withRelationshipManyToMany() { return this.properties.filter(property => property.relationship === types_1.SqlRelationship.MANY_TO_MANY); } get withRelationshipIntermediateTable() { return this.properties.filter(property => !!property.intermediateTable); } get withRelationshipType() { return this.properties.filter(property => property.type === types_1.SqlType.RELATIONSHIP); } get withTimezone() { return this.properties.filter(property => property.hasTimezone); } get id() { return this.properties.find(property => property.type === types_1.SqlType.ID); } // data for component // aggregate get aggregate() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // commands get createCommand() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get updateCommand() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // commands handler get createCommandHandler() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get updateCommandHandler() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // queries handler get findQueryHandler() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY); // exclude one to many relations } get findByIdQueryHandler() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY); // exclude one to many relations } get getQueryHandler() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY); // exclude one to many relations } // services get createService() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get updateService() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // events get createdEvent() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get updatedEvent() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get deletedEvent() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // controllers get createController() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get updateController() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // resolvers get createResolver() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get updateResolver() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } // graphql get graphqlType() { return this.properties; // exclude one to many relations } get graphqlInput() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY); // exclude one to many relations //.filter(property => !(property.relationship === SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } // DTOs get dto() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField to avoid circular dependency } get createDto() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } get updateDto() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } // models get modelColumns() { return this.properties; // exclude one to many relations } get schemaRelations() { return this.properties.filter(property => property.relationship); // only relationship } // postman get postmanGraphQLCreateQuery() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_ONE) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_MANY) // exclude many to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLGetQuery() { return this.properties .filter(property => !this.deletedAtField.includes(property.name)) // exclude deleteAt .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_ONE) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_MANY) // exclude many to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLFindQuery() { return this.properties .filter(property => !this.deletedAtField.includes(property.name)) // exclude deleteAt .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_ONE) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_MANY) // exclude many to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLFindByIdQuery() { return this.properties .filter(property => !this.deletedAtField.includes(property.name)) // exclude deleteAt .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_ONE) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_MANY) // exclude many to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLUpdateQuery() { return this.properties .filter(property => !this.deletedAtField.includes(property.name)) // exclude deleteAt .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_ONE) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_MANY) // exclude many to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLCreateVariables() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLUpdateVariables() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanGraphQLDeleteQuery() { return this.properties .filter(property => !this.deletedAtField.includes(property.name)) // exclude deleteAt .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_ONE) // exclude one to many relations .filter(property => property.relationship !== types_1.SqlRelationship.MANY_TO_MANY) // exclude many to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get postmanRestCreate() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } get postmanRestUpdate() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } // data for testing get test() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } get isNotNullable() { return this.properties.filter(property => property.nullable === false); } get hasLength() { return this.properties.filter(property => !!property.length); } get hasMaxLength() { return this.properties.filter(property => !!property.maxLength); } get hasMinLength() { return this.properties.filter(property => !!property.minLength); } get isInteger() { return this.properties.filter(property => property.type === types_1.SqlType.INT); } get isIntegerUnsigned() { return this.properties.filter(property => property.type === types_1.SqlType['INT.UNSIGNED']); } get isBoolean() { return this.properties.filter(property => property.type === types_1.SqlType.BOOLEAN); } get isEnum() { return this.properties.filter(property => property.type === types_1.SqlType.ENUM); } get isTimestamp() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.type === types_1.SqlType.TIMESTAMP); } // others get valueObjects() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } get response() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to many relations } get seed() { return this.properties .filter(property => !this.timestampFields.includes(property.name)) // exclude timestamps .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get mapper() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } get mock() { return this.properties .filter(property => property.relationship !== types_1.SqlRelationship.ONE_TO_MANY) // exclude one to many relations .filter(property => !(property.relationship === types_1.SqlRelationship.ONE_TO_ONE && !property.relationshipField)); // exclude one to one relations without relationshipField, is relation one to one without xxxx_id } getForeignRelationship(boundedContextName) { return this.withRelationship.filter(item => { if (!item.relationshipModulePath) return false; return item.relationshipModulePath.split('/')[0] !== boundedContextName; }); } add(property) { this.properties.push(property); } filter(fn) { return this.properties.filter(fn); } toDto() { return this.properties.map(property => property.toDto()); } } exports.Properties = Properties;