tspace-mysql
Version:
Tspace MySQL is a promise-based ORM for Node.js, designed with modern TypeScript and providing type safety for schema databases.
106 lines (105 loc) • 2.48 kB
TypeScript
import { type T, Model } from '..';
declare class ModelMeta<M extends Model> {
private model;
constructor(model: M);
/**
*
* @returns {string}
*/
table(): string;
/**
*
* @returns {string}
*/
column(column: T.Column<M>): T.Column<M>;
/**
*
* @returns {`${string}.${T.Column<M>}`}
*/
columnReference(column: T.Column<M>): `${string}.${T.Column<M>}`;
/**
*
* @returns {`${string}.${T.Column<M>}`}
*/
columnRef(column: T.Column<M>): `${string}.${T.Column<M>}`;
/**
*
* @returns {string[]}
*/
columns(): string[];
/**
*
* @returns {boolean}
*/
hasColumn(name: string): boolean;
/**
*
* @returns {string | undefined}
*/
primaryKey(): string | undefined;
/**
*
* @returns {string[]}
*/
indexes(): string[];
/**
*
* @returns {string[]}
*/
nullable(): string[];
/**
*
* @returns {Partial<T.SchemaModel<M>> | null}
*/
defaults(): Partial<T.SchemaModel<M>> | null;
/**
*
* @param {string} column
* @returns {string | undefined}
*/
columnTypeOf(column: T.Column<M>): string | undefined;
/**
*
* @param {string} column
* @returns {string | undefined}
*/
columnType(column: T.Column<M>): string | undefined;
}
/**
* The 'Meta' used to get the metadata of a Model works only when a schema is added to the Model.
*
* @example
* import { Meta } from 'tspace-mysql';
* import { User } from './Model/User';
*
* const meta = Meta(User)
* // --- get metadata of User ---
* const table = meta.table()
* const column = meta.column('id')
* const columnRef = meta.columnReference('id')
* const columnTypeOf = meta.columnTypeOf('id')
* const columnType = meta.columnType('id')
* const columns = meta.columns()
* const hasColumn = meta.hasColumn('id')
* const primaryKey = meta.primaryKey()
* const indexes = meta.indexes()
* const nullable = meta.nullable()
* const defaults = meta.defaults()
*
* console.log({
* table,
* column,
* columnRef
* columnTypeOf,
* columnType
* columns,
* hasColumn,
* primaryKey,
* indexes,
* nullable,
* defaults,
* })
*/
declare const Meta: <M extends Model<any, unknown>>(model: new () => M) => ModelMeta<M>;
export { Meta };
export default Meta;