123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // router
- import express from "express";
- const router = express.Router();
- export default router;
- // db
- import { db } from "#db";
- import { ZDbShema } from "#db-shema";
- import { sql } from "slonik";
- // api
- import { CompanyManagerApi } from "#api/company-manager-api.ts";
- // error
- import { ApiError } from "#exceptions/api-error.ts";
- // dayjs
- import dayjs from "dayjs";
- import utc from "dayjs/plugin/utc.js";
- dayjs.extend(utc);
- import timezone from "dayjs/plugin/timezone.js";
- dayjs.extend(timezone);
- // other
- import { z } from "zod";
- import { v7 as uuidv7 } from "uuid";
- // import { logger } from "#logger";
- import { UserUtils } from "#utils/user-utils.js";
- dayjs.extend(utc);
- router.post("/add-company", async (req, res, next) => {
- try {
- // функция валидации ответа
- const ZResType = CompanyManagerApi.ZAddCompany.res; //change
- const sendRes = (
- status: 200 | 400 | 500,
- resData: z.infer<typeof ZResType>,
- ) => {
- const response = ZResType.parse(resData);
- res.status(status).json(response);
- };
- //
- // валидация запроса
- const { name } = CompanyManagerApi.ZAddCompany.req.parse(req.body);
- const userId = UserUtils.getUserFromReq(req).userId;
- const companyId = uuidv7();
- // company
- await db.query(
- sql.unsafe`
- insert into users.companies
- (company_id, name, owner_id)
- values
- (${companyId}, ${name}, ${userId})`,
- );
- sendRes(200, { code: "success" });
- } catch (e) {
- next(e);
- }
- });
|