fomex-sequelize
v0.0.39
Published
Downloads
8
Readme
Fomex Sequelize
Installation
yarn add fomex-sequelize
Initialization
// src/bootstrap.ts
import { Sequelize } from 'fomex-sequelize';
export const sequelize = new Sequelize({
// ...
});
Register plugin
// src/bootstrap.ts
import { baseWebRouter, baseConsoleCommander } from 'fomex';
import { PluginSequelize } from 'fomex-sequelize';
const sequelizePlugin = new PluginSequelize(sequelize);
export const webRouter = baseWebRouter.global(sequelizePlugin);
export const consoleCommander = baseConsoleCommander.global(sequelizePlugin);
Register commands
// src/console.ts
import { ConsoleApplication } from 'fomex';
import { getSequelizeCommandsPath } from 'fomex-sequelize';
const app = new ConsoleApplication({
commandsPath: [
getSequelizeCommandsPath(sequelize),
],
});
app.run();
Now, feel free to input command npx fomex
in terminal and see what is shown.
Define model
// src/models/User.ts
import { Model, column } from 'fomex-sequelize';
export class User extends Model {
id = column.int.primaryKey().autoIncrement();
name = column.string.notNull();
}
Then, try to import model class into routes or commands
// src/routes/user.ts
import { rule } from 'fomex';
import { webRouter } from '../bootstrap';
import { User } from '../models/User';
export default webRouter({
routes() {
this
.get('/users')
.action(async (ctx) => {
const users = await User.findAll();
ctx.send(200, users);
});
this
.get('/users/:id')
.params({
id: rule.number,
})
.action(async (ctx) => {
const user = await User.find({
where: {
id: ctx.request.params.id,
},
});
if (user) {
ctx.send(user);
} else {
ctx.send(404);
}
});
}
});