adonis-odm
Version:
A comprehensive MongoDB ODM for AdonisJS with Lucid-style API, type-safe relationships, embedded documents, and transaction support
139 lines • 4.57 kB
TypeScript
/**
* Naming strategy interface following AdonisJS Lucid conventions
*/
export interface NamingStrategyContract {
/**
* Convert property name to database column name
*/
columnName(model: any, propertyName: string): string;
/**
* Convert property name to serialized name for JSON output
*/
serializedName(model: any, propertyName: string): string;
/**
* Convert model name to collection/table name
*/
tableName(model: any): string;
/**
* Generate foreign key name for relationships
*/
relationForeignKey(relation: string, model: any, relatedModel: any): string;
/**
* Generate local key name for relationships
*/
relationLocalKey(relation: string, model: any, relatedModel: any): string;
/**
* Generate pivot table name for many-to-many relationships
*/
relationPivotTable(relation: 'manyToMany', model: any, relatedModel: any): string;
/**
* Generate pivot foreign key name for many-to-many relationships
*/
relationPivotForeignKey(relation: 'manyToMany', model: any): string;
/**
* Generate pagination meta keys
*/
paginationMetaKeys(): Record<string, string>;
}
/**
* String helper functions for naming conversions
*/
export declare class StringHelper {
/**
* Convert camelCase to snake_case
*/
static snakeCase(str: string): string;
/**
* Convert snake_case to camelCase
*/
static camelCase(str: string): string;
/**
* Convert string to singular form (basic implementation)
*/
static singular(str: string): string;
/**
* Convert string to plural form (basic implementation)
*/
static plural(str: string): string;
}
/**
* Default naming strategy following AdonisJS Lucid conventions
* This strategy converts camelCase properties to snake_case for serialization
*/
export declare class CamelCaseNamingStrategy implements NamingStrategyContract {
/**
* Convert property name to database column name
* By default, converts camelCase to snake_case
*/
columnName(_model: any, propertyName: string): string;
/**
* Convert property name to serialized name for JSON output
* By default, converts camelCase to snake_case
*/
serializedName(_model: any, propertyName: string): string;
/**
* Convert model name to collection/table name
* Converts to singular snake_case
*/
tableName(model: any): string;
/**
* Generate foreign key name for relationships
*/
relationForeignKey(relation: string, model: any, relatedModel: any): string;
/**
* Generate local key name for relationships
*/
relationLocalKey(relation: string, model: any, relatedModel: any): string;
/**
* Generate pivot table name for many-to-many relationships
*/
relationPivotTable(_relation: 'manyToMany', model: any, relatedModel: any): string;
/**
* Generate pivot foreign key name for many-to-many relationships
*/
relationPivotForeignKey(_relation: 'manyToMany', model: any): string;
/**
* Generate pagination meta keys
*/
paginationMetaKeys(): Record<string, string>;
}
/**
* Snake case naming strategy that keeps everything in snake_case
*/
export declare class SnakeCaseNamingStrategy implements NamingStrategyContract {
/**
* Convert property name to database column name
* Keeps snake_case as-is
*/
columnName(_model: any, propertyName: string): string;
/**
* Convert property name to serialized name for JSON output
* Keeps snake_case as-is
*/
serializedName(_model: any, propertyName: string): string;
/**
* Convert model name to collection/table name
*/
tableName(model: any): string;
/**
* Generate foreign key name for relationships
*/
relationForeignKey(relation: string, model: any, relatedModel: any): string;
/**
* Generate local key name for relationships
*/
relationLocalKey(relation: string, model: any, relatedModel: any): string;
/**
* Generate pivot table name for many-to-many relationships
*/
relationPivotTable(_relation: 'manyToMany', model: any, relatedModel: any): string;
/**
* Generate pivot foreign key name for many-to-many relationships
*/
relationPivotForeignKey(_relation: 'manyToMany', model: any): string;
/**
* Generate pagination meta keys
*/
paginationMetaKeys(): Record<string, string>;
}
//# sourceMappingURL=naming_strategy.d.ts.map