import * as elements from '@yellicode/elements'; import { SqlObjectNameProvider, DefaultSqlObjectNameProvider } from '../../relational/providers/sql-object-name-provider'; import { SqlServerQuery } from '../model/sql-server-database'; export interface SqlServerObjectNameProvider extends SqlObjectNameProvider { /** * Returns the name for the primary key constraint for the provided type. The default is 'PK_${type.name}'. */ getPrimaryKeyName(type: elements.Type): string; /** * Returns the name for the foreign key constraint that corresponds to the provided dependent property. * The default is 'FK_${dependentTypeName}_${principalTypeName}'. */ getForeignKeyName(foreignKeyProperty: elements.Property, primaryKeyProperty: elements.Property): string; /** * Returns the name for a user-defined table type that corresponds to the provided type. The default is '${type.name}Table', where * type.name is written in UpperCamelCase. * @param sqlTypeName The sql type name for the type. This name is provided by the current TypeNameProvider. */ getComplexTableTypeName(type: elements.Type): string; /** * Returns the name for a single-column user-defined table type that corresponds to the provided type. * The default is '${sqlTypeName}Table', where sqlTypeName is written in UpperCamelCase. * @param sqlTypeName The sql type name for the type. This name is provided by the current TypeNameProvider. */ getSimpleTableTypeName(type: elements.Type, sqlTypeName: string): string; /** * Returns the column name for the single column of a simple user defined table type (where the single column matches the * specified type). The default value is 'Value'. * @param sqlTypeName The sql type name of the only column of the user defined table type. */ getSimpleTableTypeColumnName(sqlTypeName: string): string; getStoredProcNameForQuery(query: SqlServerQuery): string; } export declare class DefaultSqlServerObjectNameProvider extends DefaultSqlObjectNameProvider implements SqlServerObjectNameProvider { getPrimaryKeyName(type: elements.Type): string; getForeignKeyName(foreignKeyProperty: elements.Property, primaryKeyProperty: elements.Property): string; getSimpleTableTypeName(type: elements.Type, sqlTypeName: string): string; getComplexTableTypeName(type: elements.Type): string; getParameterName(columnName: string, isMultiValued: boolean): string; getSimpleTableTypeColumnName(sqlTypeName: string): string; getStoredProcNameForQuery(query: SqlServerQuery): string; }