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.

154 lines 5.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.postSchemaArray = exports.postSchemaObject = exports.userSchemaArray = exports.userSchemaObject = exports.PostUserDefault = exports.PostDefault = exports.UserDefault = exports.PostUser = exports.Post = exports.User = exports.pattern = void 0; const lib_1 = require("../../src/lib"); exports.pattern = 'snake_case'; class User extends lib_1.Model { constructor() { super(); this.usePattern(exports.pattern); this.useUUID(); this.useTimestamp(); this.useSoftDelete(); this.hasMany({ model: Post, name: 'posts' }); this.hasOne({ model: Post, name: 'post' }); this.useSchema(lib_1.Model.formatPattern({ data: { id: lib_1.Blueprint.int().primary().autoIncrement(), uuid: lib_1.Blueprint.varchar(50).null(), email: lib_1.Blueprint.varchar(50).null(), name: lib_1.Blueprint.varchar(255).null(), username: lib_1.Blueprint.varchar(255).null(), password: lib_1.Blueprint.varchar(255).null(), status: lib_1.Blueprint.boolean().default(0), createdAt: lib_1.Blueprint.timestamp().null(), updatedAt: lib_1.Blueprint.timestamp().null(), deletedAt: lib_1.Blueprint.timestamp().null(), }, pattern: exports.pattern })); } } exports.User = User; class Post extends lib_1.Model { constructor() { super(); this.usePattern(exports.pattern); this.useUUID(); this.useTimestamp(); this.useSoftDelete(); this.belongsTo({ name: 'user', model: User }); this.belongsToMany({ name: 'subscribers', model: User, modelPivot: PostUser }); this.useSchema(lib_1.Model.formatPattern({ data: { id: lib_1.Blueprint.int().notNull().primary().autoIncrement(), uuid: lib_1.Blueprint.varchar(50).null(), userId: lib_1.Blueprint.int().null(), title: lib_1.Blueprint.varchar(100).notNull(), subtitle: lib_1.Blueprint.varchar(100).null(), description: lib_1.Blueprint.varchar(255).null(), createdAt: lib_1.Blueprint.timestamp().null(), updatedAt: lib_1.Blueprint.timestamp().null(), deletedAt: lib_1.Blueprint.timestamp().null() }, pattern: exports.pattern })); } } exports.Post = Post; class PostUser extends lib_1.Model { constructor() { super(); this.usePattern(exports.pattern); this.useUUID(); this.useTimestamp(); this.useSoftDelete(); this.useTableSingular(); this.useSchema(lib_1.Model.formatPattern({ data: { id: lib_1.Blueprint.int().notNull().primary().autoIncrement(), uuid: lib_1.Blueprint.varchar(50).null(), userId: lib_1.Blueprint.int().notNull(), postId: lib_1.Blueprint.int().notNull(), createdAt: lib_1.Blueprint.timestamp().null(), updatedAt: lib_1.Blueprint.timestamp().null(), deletedAt: lib_1.Blueprint.timestamp().null() }, pattern: exports.pattern })); } } exports.PostUser = PostUser; class UserDefault extends lib_1.Model { constructor() { super(); this.useUUID(); this.useTimestamp(); this.useSoftDelete(); this.hasMany({ model: Post, name: 'posts' }); this.hasOne({ model: Post, name: 'post' }); } } exports.UserDefault = UserDefault; class PostDefault extends lib_1.Model { constructor() { super(); this.useUUID(); this.useTimestamp(); this.useSoftDelete(); this.belongsTo({ name: 'user', model: User }); this.belongsToMany({ name: 'subscribers', model: User, modelPivot: PostUser }); } } exports.PostDefault = PostDefault; class PostUserDefault extends lib_1.Model { constructor() { super(); this.useUUID(); this.useTimestamp(); this.useTableSingular(); this.useTimestamp(); } } exports.PostUserDefault = PostUserDefault; exports.userSchemaObject = { type: 'object', properties: { id: { type: 'integer' }, uuid: { anyOf: [{ type: 'string' }, { type: 'null' }] }, email: { type: 'string' }, name: { anyOf: [{ type: 'string' }, { type: 'null' }] }, username: { anyOf: [{ type: 'string' }, { type: 'null' }] }, password: { type: 'string' }, createdAt: { anyOf: [{ type: 'string' }, { type: "object", format: "date" }, { type: 'null' }] }, updatedAt: { anyOf: [{ type: 'string' }, { type: "object", format: "date" }, { type: 'null' }] }, deletedAt: { anyOf: [{ type: 'string' }, { type: "object", format: "date" }, { type: 'null' }] }, } }; exports.userSchemaArray = { type: 'array', items: { ...exports.userSchemaObject } }; exports.postSchemaObject = { type: 'object', properties: { id: { type: 'integer' }, uuid: { anyOf: [{ type: 'string' }, { type: 'null' }] }, userId: { anyOf: [{ type: 'integer' }, { type: 'null' }] }, title: { type: 'string' }, subtitle: { anyOf: [{ type: 'string' }, { type: 'null' }] }, description: { anyOf: [{ type: 'string' }, { type: 'null' }] }, createdAt: { anyOf: [{ type: 'string' }, { type: "object", format: "date" }, { type: 'null' }] }, updatedAt: { anyOf: [{ type: 'string' }, { type: "object", format: "date" }, { type: 'null' }] }, deletedAt: { anyOf: [{ type: 'string' }, { type: "object", format: "date" }, { type: 'null' }] }, } }; exports.postSchemaArray = { type: 'array', items: { ...exports.postSchemaObject } }; //# sourceMappingURL=schema-spec.js.map