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
JavaScript
"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