46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { Controller, Get, Post } from '../../decorators/route.ts';
|
|
import type { Prisma } from '../../generated/prisma/index.js';
|
|
import prisma from '../../libs/db.ts';
|
|
import type { Context } from 'koa';
|
|
|
|
@Controller('/deployments')
|
|
export class DeploymentController {
|
|
@Get('')
|
|
async list(ctx: Context) {
|
|
const { page = 1, pageSize = 10 } = ctx.query;
|
|
const result = await prisma.deployment.findMany({
|
|
where: {
|
|
valid: 1,
|
|
},
|
|
take: Number(pageSize),
|
|
skip: (Number(page) - 1) * Number(pageSize),
|
|
orderBy: {
|
|
createdAt: 'desc',
|
|
},
|
|
});
|
|
const total = await prisma.deployment.count();
|
|
|
|
return {
|
|
data: result,
|
|
page: Number(page),
|
|
pageSize: Number(pageSize),
|
|
total: total,
|
|
};
|
|
}
|
|
|
|
@Post('')
|
|
async create(ctx: Context) {
|
|
const body = ctx.request.body as Prisma.DeploymentCreateInput;
|
|
|
|
prisma.deployment.create({
|
|
data: {
|
|
branch: body.branch,
|
|
commitHash: body.commitHash,
|
|
commitMessage: body.commitMessage,
|
|
|
|
valid: 1,
|
|
},
|
|
});
|
|
}
|
|
}
|