UNPKG

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
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;