nukak
Version:
flexible and efficient ORM, with declarative JSON syntax and smart type-safety
28 lines • 3.15 kB
JavaScript
/**
* Base abstract class for all database dialects (SQL and NoSQL).
*/
export class AbstractDialect {
namingStrategy;
constructor(namingStrategy) {
this.namingStrategy = namingStrategy;
}
/**
* Resolve the table name for an entity, applying naming strategy if necessary.
*/
resolveTableName(entity, meta) {
if (meta.name !== entity.name || !this.namingStrategy) {
return meta.name;
}
return this.namingStrategy.tableName(meta.name);
}
/**
* Resolve the column/field name for a property, applying naming strategy if necessary.
*/
resolveColumnName(key, field) {
if (!field || field.name !== key || !this.namingStrategy) {
return field?.name ?? key;
}
return this.namingStrategy.columnName(field.name);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3REaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RpYWxlY3QvYWJzdHJhY3REaWFsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0lBQ2Q7SUFBckIsWUFBcUIsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBQUcsQ0FBQztJQUV4RDs7T0FFRztJQUNILGdCQUFnQixDQUFJLE1BQWUsRUFBRSxJQUFtQjtRQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEdBQVcsRUFBRSxLQUFtQjtRQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5TWV0YSwgRmllbGRPcHRpb25zLCBOYW1pbmdTdHJhdGVneSwgVHlwZSB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG4vKipcbiAqIEJhc2UgYWJzdHJhY3QgY2xhc3MgZm9yIGFsbCBkYXRhYmFzZSBkaWFsZWN0cyAoU1FMIGFuZCBOb1NRTCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERpYWxlY3Qge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBuYW1pbmdTdHJhdGVneT86IE5hbWluZ1N0cmF0ZWd5KSB7fVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSB0YWJsZSBuYW1lIGZvciBhbiBlbnRpdHksIGFwcGx5aW5nIG5hbWluZyBzdHJhdGVneSBpZiBuZWNlc3NhcnkuXG4gICAqL1xuICByZXNvbHZlVGFibGVOYW1lPEU+KGVudGl0eTogVHlwZTxFPiwgbWV0YTogRW50aXR5TWV0YTxFPik6IHN0cmluZyB7XG4gICAgaWYgKG1ldGEubmFtZSAhPT0gZW50aXR5Lm5hbWUgfHwgIXRoaXMubmFtaW5nU3RyYXRlZ3kpIHtcbiAgICAgIHJldHVybiBtZXRhLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWluZ1N0cmF0ZWd5LnRhYmxlTmFtZShtZXRhLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGNvbHVtbi9maWVsZCBuYW1lIGZvciBhIHByb3BlcnR5LCBhcHBseWluZyBuYW1pbmcgc3RyYXRlZ3kgaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgcmVzb2x2ZUNvbHVtbk5hbWUoa2V5OiBzdHJpbmcsIGZpZWxkOiBGaWVsZE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGlmICghZmllbGQgfHwgZmllbGQubmFtZSAhPT0ga2V5IHx8ICF0aGlzLm5hbWluZ1N0cmF0ZWd5KSB7XG4gICAgICByZXR1cm4gZmllbGQ/Lm5hbWUgPz8ga2V5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYW1pbmdTdHJhdGVneS5jb2x1bW5OYW1lKGZpZWxkLm5hbWUpO1xuICB9XG59XG4iXX0=