quaerateum
Version:
Simple 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 JS.
34 lines (24 loc) • 1.03 kB
text/typescript
import { NamingStrategy } from './NamingStrategy';
export class UnderscoreNamingStrategy implements NamingStrategy {
classToTableName(entityName: string): string {
return this.underscore(entityName);
}
joinColumnName(propertyName: string, className?: string): string {
return this.underscore(propertyName) + '_' + this.referenceColumnName();
}
joinKeyColumnName(entityName: string, referencedColumnName?: string): string {
return this.classToTableName(entityName) + '_' + (referencedColumnName || this.referenceColumnName());
}
joinTableName(sourceEntity: string, targetEntity: string, propertyName?: string): string {
return this.classToTableName(sourceEntity) + '_to_' + this.classToTableName(targetEntity);
}
propertyToColumnName(propertyName: string): string {
return this.underscore(propertyName);
}
referenceColumnName(): string {
return 'id';
}
private underscore(name: string): string {
return name.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();
}
}