@mee4dy/crud
Version:
Create a backend and frontend in 5 minutes! With our powerful full stack crud system, customize it to suit you.
89 lines (76 loc) • 2.02 kB
text/typescript
import { Body, Get, Param, Post, Query } from '@nestjs/common';
import { Response } from '../common/interfaces/response.interface';
import { CrudService } from './crud.service';
import { CrudCtx } from './decorators/crud-ctx.decorator';
import { QueryParsePipe } from './pipes/query.parse.pipe';
import { PK } from '../common/constatns/constatns';
import { Model } from 'sequelize';
export abstract class CrudController<T extends Model> {
constructor(private readonly service: CrudService<T>) {
this.pk = this.service.getPK();
}
private pk;
async items( { params }, query): Promise<Response> {
const items = await this.service.getItems({
params,
query,
});
return {
status: true,
data: {
items: items,
},
};
}
async item( { params }, pk: number, query): Promise<Response> {
const item = await this.service.getItem({
params,
query: {
filters: {
[this.pk]: pk,
...query.filters,
},
},
});
return {
status: true,
data: {
item: item,
},
};
}
async create( { params }, data: object): Promise<Response> {
const item = await this.service.create(data);
return {
status: true,
data: {
item: item,
},
};
}
async update( { params }, pk: number, data: object): Promise<Response> {
const item = await this.service.update(pk, data);
return {
status: true,
data: {
item: item,
},
};
}
async delete( { params }, pk: number): Promise<Response> {
const result = await this.service.delete({
[this.pk]: pk,
});
return {
status: true,
data: {
result: result,
},
};
}
}