Skip to main content

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();
}
}