@mikro-orm/core
Version:
TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.
23 lines (22 loc) • 901 B
JavaScript
import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
/** Naming strategy for MongoDB that uses camelCase property names and hyphenated collection names. */
export class MongoNamingStrategy extends AbstractNamingStrategy {
classToTableName(entityName, tableName) {
return tableName ?? entityName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
joinColumnName(propertyName) {
return propertyName;
}
joinKeyColumnName(entityName, referencedColumnName, composite, tableName) {
return tableName ?? entityName;
}
joinTableName(sourceEntity, targetEntity, propertyName, tableName) {
return this.classToTableName(sourceEntity, tableName) + '_' + this.propertyToColumnName(propertyName);
}
propertyToColumnName(propertyName) {
return propertyName;
}
referenceColumnName() {
return '_id';
}
}