UNPKG

artmapper

Version:

Spring Boot clone for Node.js with TypeScript/JavaScript - JPA-like ORM, Lombok decorators, dependency injection, and MySQL support

146 lines 5.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ONE_TO_ONE_METADATA_KEY = exports.MANY_TO_MANY_METADATA_KEY = exports.MANY_TO_ONE_METADATA_KEY = exports.ONE_TO_MANY_METADATA_KEY = exports.GENERATED_VALUE_METADATA_KEY = exports.ID_METADATA_KEY = exports.COLUMN_METADATA_KEY = exports.TABLE_METADATA_KEY = exports.ENTITY_METADATA_KEY = void 0; exports.Entity = Entity; exports.Table = Table; exports.Column = Column; exports.Id = Id; exports.GeneratedValue = GeneratedValue; exports.OneToMany = OneToMany; exports.ManyToOne = ManyToOne; exports.ManyToMany = ManyToMany; exports.OneToOne = OneToOne; require("reflect-metadata"); exports.ENTITY_METADATA_KEY = Symbol('entity'); exports.TABLE_METADATA_KEY = Symbol('table'); exports.COLUMN_METADATA_KEY = Symbol('column'); exports.ID_METADATA_KEY = Symbol('id'); exports.GENERATED_VALUE_METADATA_KEY = Symbol('generatedValue'); exports.ONE_TO_MANY_METADATA_KEY = Symbol('oneToMany'); exports.MANY_TO_ONE_METADATA_KEY = Symbol('manyToOne'); exports.MANY_TO_MANY_METADATA_KEY = Symbol('manyToMany'); exports.ONE_TO_ONE_METADATA_KEY = Symbol('oneToOne'); /** * Marks a class as a JPA entity */ function Entity(name) { return function (target) { Reflect.defineMetadata(exports.ENTITY_METADATA_KEY, { name: name || target.name }, target); }; } /** * Specifies the table name for the entity */ function Table(name) { return function (target) { Reflect.defineMetadata(exports.TABLE_METADATA_KEY, { name }, target); }; } /** * Marks a property as a database column */ function Column(options) { return function (target, propertyKey) { const existingColumns = Reflect.getMetadata(exports.COLUMN_METADATA_KEY, target.constructor) || {}; existingColumns[propertyKey] = { name: options?.name || propertyKey, type: options?.type, nullable: options?.nullable !== false, unique: options?.unique || false, length: options?.length, precision: options?.precision, scale: options?.scale, default: options?.default, enum: options?.enum, unsigned: options?.unsigned, zerofill: options?.zerofill, autoIncrement: options?.autoIncrement, comment: options?.comment, charset: options?.charset, collate: options?.collate, onUpdate: options?.onUpdate, }; Reflect.defineMetadata(exports.COLUMN_METADATA_KEY, existingColumns, target.constructor); }; } /** * Marks a property as the primary key */ function Id() { return function (target, propertyKey) { Reflect.defineMetadata(exports.ID_METADATA_KEY, propertyKey, target.constructor); }; } /** * Specifies generation strategy for primary key */ function GeneratedValue(options) { return function (target, propertyKey) { Reflect.defineMetadata(exports.GENERATED_VALUE_METADATA_KEY, { propertyKey, strategy: options?.strategy || 'AUTO', generator: options?.generator, }, target.constructor); }; } /** * One-to-many relationship */ function OneToMany(options) { return function (target, propertyKey) { const existingRelations = Reflect.getMetadata(exports.ONE_TO_MANY_METADATA_KEY, target.constructor) || {}; existingRelations[propertyKey] = { targetEntity: options?.targetEntity, cascade: options?.cascade || [], fetch: options?.fetch || 'LAZY', mappedBy: options?.mappedBy, }; Reflect.defineMetadata(exports.ONE_TO_MANY_METADATA_KEY, existingRelations, target.constructor); }; } /** * Many-to-one relationship */ function ManyToOne(options) { return function (target, propertyKey) { const existingRelations = Reflect.getMetadata(exports.MANY_TO_ONE_METADATA_KEY, target.constructor) || {}; existingRelations[propertyKey] = { targetEntity: options?.targetEntity, cascade: options?.cascade || [], fetch: options?.fetch || 'EAGER', joinColumn: options?.joinColumn, }; Reflect.defineMetadata(exports.MANY_TO_ONE_METADATA_KEY, existingRelations, target.constructor); }; } /** * Many-to-many relationship */ function ManyToMany(options) { return function (target, propertyKey) { const existingRelations = Reflect.getMetadata(exports.MANY_TO_MANY_METADATA_KEY, target.constructor) || {}; existingRelations[propertyKey] = { targetEntity: options?.targetEntity, cascade: options?.cascade || [], fetch: options?.fetch || 'LAZY', joinTable: options?.joinTable, }; Reflect.defineMetadata(exports.MANY_TO_MANY_METADATA_KEY, existingRelations, target.constructor); }; } /** * One-to-one relationship */ function OneToOne(options) { return function (target, propertyKey) { const existingRelations = Reflect.getMetadata(exports.ONE_TO_ONE_METADATA_KEY, target.constructor) || {}; existingRelations[propertyKey] = { targetEntity: options?.targetEntity, cascade: options?.cascade || [], fetch: options?.fetch || 'EAGER', joinColumn: options?.joinColumn, }; Reflect.defineMetadata(exports.ONE_TO_ONE_METADATA_KEY, existingRelations, target.constructor); }; } //# sourceMappingURL=entity.js.map