@decaf-ts/core
Version:
Core persistence module for the decaf framework
46 lines • 6.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTableName = getTableName;
exports.getColumnName = getColumnName;
exports.sequenceNameForModel = sequenceNameForModel;
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
const db_decorators_1 = require("@decaf-ts/db-decorators");
const constants_1 = require("./../persistence/constants.cjs");
/**
* @description Gets the table name for a model
* @summary Retrieves the table name associated with a model by checking metadata or falling back to the constructor name
* @template M - Type that extends Model
* @param {M | Constructor<M>} model - The model instance or constructor to get the table name for
* @return {string} The table name for the model
* @function getTableName
* @memberOf module:core
*/
function getTableName(model) {
const obj = model instanceof decorator_validation_1.Model ? model.constructor : model;
const metadata = Reflect.getOwnMetadata(db_decorators_1.Repository.key(constants_1.PersistenceKeys.TABLE), obj);
if (metadata) {
return metadata;
}
if (model instanceof decorator_validation_1.Model) {
return model.constructor.name;
}
return model.name;
}
function getColumnName(model, attribute) {
const metadata = Reflect.getMetadata(db_decorators_1.Repository.key(constants_1.PersistenceKeys.COLUMN), model, attribute);
return metadata ? metadata : attribute;
}
/**
* @description Generates a sequence name for a model
* @summary Creates a standardized sequence name by combining the table name with additional arguments
* @template M - Type that extends Model
* @param {M | Constructor<M>} model - The model instance or constructor to generate the sequence name for
* @param {...string} args - Additional string arguments to append to the sequence name
* @return {string} The generated sequence name
* @function sequenceNameForModel
* @memberOf module:core
*/
function sequenceNameForModel(model, ...args) {
return [getTableName(model), ...args].join("_");
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxvQ0FnQkM7QUFFRCxzQ0FVQztBQVlELG9EQUtDO0FBMURELHlFQUFvRTtBQUNwRSwyREFBcUQ7QUFDckQsOERBQTJEO0FBRTNEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsWUFBWSxDQUMxQixLQUF5QjtJQUV6QixNQUFNLEdBQUcsR0FBRyxLQUFLLFlBQVksNEJBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRS9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQ3JDLDBCQUFVLENBQUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsS0FBSyxDQUFDLEVBQ3JDLEdBQUcsQ0FDSixDQUFDO0lBQ0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLEtBQUssWUFBWSw0QkFBSyxFQUFFLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQzNCLEtBQVEsRUFDUixTQUFpQjtJQUVqQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUNsQywwQkFBVSxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE1BQU0sQ0FBQyxFQUN0QyxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxLQUF5QixFQUN6QixHQUFHLElBQWM7SUFFakIsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSB0YWJsZSBuYW1lIGZvciBhIG1vZGVsXG4gKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIHRhYmxlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGEgbW9kZWwgYnkgY2hlY2tpbmcgbWV0YWRhdGEgb3IgZmFsbGluZyBiYWNrIHRvIHRoZSBjb25zdHJ1Y3RvciBuYW1lXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0ge00gfCBDb25zdHJ1Y3RvcjxNPn0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugb3IgY29uc3RydWN0b3IgdG8gZ2V0IHRoZSB0YWJsZSBuYW1lIGZvclxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgdGFibGUgbmFtZSBmb3IgdGhlIG1vZGVsXG4gKiBAZnVuY3Rpb24gZ2V0VGFibGVOYW1lXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlTmFtZTxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTSB8IENvbnN0cnVjdG9yPE0+XG4pOiBzdHJpbmcge1xuICBjb25zdCBvYmogPSBtb2RlbCBpbnN0YW5jZW9mIE1vZGVsID8gbW9kZWwuY29uc3RydWN0b3IgOiBtb2RlbDtcblxuICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXG4gICAgUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLlRBQkxFKSxcbiAgICBvYmpcbiAgKTtcbiAgaWYgKG1ldGFkYXRhKSB7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG4gIGlmIChtb2RlbCBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgcmV0dXJuIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cbiAgcmV0dXJuIG1vZGVsLm5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5OYW1lPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBNLFxuICBhdHRyaWJ1dGU6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgIFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5DT0xVTU4pLFxuICAgIG1vZGVsLFxuICAgIGF0dHJpYnV0ZVxuICApO1xuICByZXR1cm4gbWV0YWRhdGEgPyBtZXRhZGF0YSA6IGF0dHJpYnV0ZTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgc2VxdWVuY2UgbmFtZSBmb3IgYSBtb2RlbFxuICogQHN1bW1hcnkgQ3JlYXRlcyBhIHN0YW5kYXJkaXplZCBzZXF1ZW5jZSBuYW1lIGJ5IGNvbWJpbmluZyB0aGUgdGFibGUgbmFtZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0ge00gfCBDb25zdHJ1Y3RvcjxNPn0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugb3IgY29uc3RydWN0b3IgdG8gZ2VuZXJhdGUgdGhlIHNlcXVlbmNlIG5hbWUgZm9yXG4gKiBAcGFyYW0gey4uLnN0cmluZ30gYXJncyAtIEFkZGl0aW9uYWwgc3RyaW5nIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhlIHNlcXVlbmNlIG5hbWVcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGdlbmVyYXRlZCBzZXF1ZW5jZSBuYW1lXG4gKiBAZnVuY3Rpb24gc2VxdWVuY2VOYW1lRm9yTW9kZWxcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VOYW1lRm9yTW9kZWw8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IE0gfCBDb25zdHJ1Y3RvcjxNPixcbiAgLi4uYXJnczogc3RyaW5nW11cbikge1xuICByZXR1cm4gW2dldFRhYmxlTmFtZShtb2RlbCksIC4uLmFyZ3NdLmpvaW4oXCJfXCIpO1xufVxuIl19