Database
Kult uses TypeOrm under the hood you can reference their docs for more information.
Environment Variables
Set the following environment variables in your .env
:
.env
DATABASE_TYPE='postgres'
DATABASE_HOST='localhost'
DATABASE_PORT=5444
DATABASE_USERNAME='admin'
DATABASE_PASSWORD='admin'
DATABASE_DATABASE='development'
Models
src/app/model/user.model.ts
import { Column, Entity } from 'typeorm';
@Entity()
export default class User {
@Column({ primary: true })
id: number;
@Column()
name: string;
@Column()
description: string;
@Column()
filename: string;
@Column()
views: number;
@Column()
isPublished: boolean;
}
Using respositories in controllers
src/app/controllers/user.controller.ts
import {
KultController,
Get,
Application,
ControllerBase,
Context,
} from '@kult/core';
import User from '../models/user.model';
@KultController('/users')
class UserController extends ControllerBase {
constructor(app: Application) {
super(app);
}
@Get('/find')
async find(ctx: Context) {
const { datasource } = this.app.database;
const users = await datasource?.getRepository(User).find();
return users;
}
}
export default UserController;
Using respositories in plugins
src/plugins/logger/index.ts
import { Application, KultPlugin, PluginBase } from '@kult/core';
import User from 'app/models/user.model';
@KultPlugin('Logger')
export default class Logger extends PluginBase {
constructor(app: Application) {
super(app)
const { datasource } = this.app.database;
const users = await datasource?.getRepository(User).find();
}
}