artmapper
Version:
Spring Boot clone for Node.js with TypeScript/JavaScript - JPA-like ORM, Lombok decorators, dependency injection, and MySQL support
141 lines • 6.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TEMPORAL_METADATA_KEY = exports.ENUMERATED_METADATA_KEY = exports.TRANSIENT_METADATA_KEY = exports.EMBEDDABLE_METADATA_KEY = exports.EMBEDDED_METADATA_KEY = exports.MAPPED_SUPERCLASS_METADATA_KEY = exports.INVERSE_JOIN_COLUMNS_METADATA_KEY = exports.JOIN_COLUMNS_METADATA_KEY = exports.JOIN_TABLE_METADATA_KEY = exports.JOIN_COLUMN_METADATA_KEY = void 0;
exports.JoinColumn = JoinColumn;
exports.JoinColumns = JoinColumns;
exports.JoinTable = JoinTable;
exports.MappedSuperclass = MappedSuperclass;
exports.Embedded = Embedded;
exports.Embeddable = Embeddable;
exports.Transient = Transient;
exports.Enumerated = Enumerated;
exports.Temporal = Temporal;
require("reflect-metadata");
exports.JOIN_COLUMN_METADATA_KEY = Symbol('joinColumn');
exports.JOIN_TABLE_METADATA_KEY = Symbol('joinTable');
exports.JOIN_COLUMNS_METADATA_KEY = Symbol('joinColumns');
exports.INVERSE_JOIN_COLUMNS_METADATA_KEY = Symbol('inverseJoinColumns');
/**
* Spring JPA @JoinColumn equivalent
* Specifies a column for joining an entity association or element collection
*/
function JoinColumn(options) {
return function (target, propertyKey) {
const existingJoinColumns = Reflect.getMetadata(exports.JOIN_COLUMN_METADATA_KEY, target.constructor) || {};
existingJoinColumns[propertyKey] = {
name: options?.name || `${propertyKey}_id`,
referencedColumnName: options?.referencedColumnName || 'id',
nullable: options?.nullable !== false,
unique: options?.unique || false,
insertable: options?.insertable !== false,
updatable: options?.updatable !== false,
columnDefinition: options?.columnDefinition,
};
Reflect.defineMetadata(exports.JOIN_COLUMN_METADATA_KEY, existingJoinColumns, target.constructor);
};
}
/**
* Spring JPA @JoinColumns equivalent
* Groups multiple JoinColumn annotations
*/
function JoinColumns(...columns) {
return function (target, propertyKey) {
const existingJoinColumns = Reflect.getMetadata(exports.JOIN_COLUMNS_METADATA_KEY, target.constructor) || {};
existingJoinColumns[propertyKey] = columns.map(col => ({
name: col.name || `${propertyKey}_id`,
referencedColumnName: col.referencedColumnName || 'id',
nullable: col.nullable !== false,
unique: col.unique || false,
insertable: col.insertable !== false,
updatable: col.updatable !== false,
columnDefinition: col.columnDefinition,
}));
Reflect.defineMetadata(exports.JOIN_COLUMNS_METADATA_KEY, existingJoinColumns, target.constructor);
};
}
/**
* Spring JPA @JoinTable equivalent
* Specifies the mapping of associations
*/
function JoinTable(options) {
return function (target, propertyKey) {
const existingJoinTables = Reflect.getMetadata(exports.JOIN_TABLE_METADATA_KEY, target.constructor) || {};
existingJoinTables[propertyKey] = {
name: options?.name || `${target.constructor.name}_${propertyKey}`,
catalog: options?.catalog,
schema: options?.schema,
joinColumns: options?.joinColumns || [],
inverseJoinColumns: options?.inverseJoinColumns || [],
};
Reflect.defineMetadata(exports.JOIN_TABLE_METADATA_KEY, existingJoinTables, target.constructor);
};
}
/**
* Spring JPA @MappedSuperclass equivalent
* Designates a class whose mapping information is applied to the entities that inherit from it
*/
exports.MAPPED_SUPERCLASS_METADATA_KEY = Symbol('mappedSuperclass');
function MappedSuperclass() {
return function (target) {
Reflect.defineMetadata(exports.MAPPED_SUPERCLASS_METADATA_KEY, true, target);
};
}
/**
* Spring JPA @Embedded equivalent
* Specifies a persistent field or property of an entity whose value is an instance of an embeddable class
*/
exports.EMBEDDED_METADATA_KEY = Symbol('embedded');
function Embedded() {
return function (target, propertyKey) {
const existingEmbedded = Reflect.getMetadata(exports.EMBEDDED_METADATA_KEY, target.constructor) || {};
existingEmbedded[propertyKey] = true;
Reflect.defineMetadata(exports.EMBEDDED_METADATA_KEY, existingEmbedded, target.constructor);
};
}
/**
* Spring JPA @Embeddable equivalent
* Specifies a class whose instances are stored as an intrinsic part of an owning entity
*/
exports.EMBEDDABLE_METADATA_KEY = Symbol('embeddable');
function Embeddable() {
return function (target) {
Reflect.defineMetadata(exports.EMBEDDABLE_METADATA_KEY, true, target);
};
}
/**
* Spring JPA @Transient equivalent
* Specifies that the property or field is not persistent
*/
exports.TRANSIENT_METADATA_KEY = Symbol('transient');
function Transient() {
return function (target, propertyKey) {
const existingTransient = Reflect.getMetadata(exports.TRANSIENT_METADATA_KEY, target.constructor) || {};
existingTransient[propertyKey] = true;
Reflect.defineMetadata(exports.TRANSIENT_METADATA_KEY, existingTransient, target.constructor);
};
}
/**
* Spring JPA @Enumerated equivalent
* Specifies that a persistent property or field should be persisted as an enumerated type
*/
exports.ENUMERATED_METADATA_KEY = Symbol('enumerated');
function Enumerated(value = 'ORDINAL') {
return function (target, propertyKey) {
const existingEnumerated = Reflect.getMetadata(exports.ENUMERATED_METADATA_KEY, target.constructor) || {};
existingEnumerated[propertyKey] = { type: value };
Reflect.defineMetadata(exports.ENUMERATED_METADATA_KEY, existingEnumerated, target.constructor);
};
}
/**
* Spring JPA @Temporal equivalent
* Specifies the temporal type of a date field
*/
exports.TEMPORAL_METADATA_KEY = Symbol('temporal');
function Temporal(value) {
return function (target, propertyKey) {
const existingTemporal = Reflect.getMetadata(exports.TEMPORAL_METADATA_KEY, target.constructor) || {};
existingTemporal[propertyKey] = { type: value };
Reflect.defineMetadata(exports.TEMPORAL_METADATA_KEY, existingTemporal, target.constructor);
};
}
//# sourceMappingURL=mapping.js.map