mainimg.controller.ts 3.25 KB
Newer Older
백승민's avatar
백승민 committed
1
import { NextFunction, Request, Response } from "express";
백승민's avatar
백승민 committed
2
3
4
5
import isLength from "validator/lib/isLength";
import { TypedRequestAuth } from "./auth.controller";
import { asyncWrap } from "../helpers";
import { mainimgDb } from "../db";
백승민's avatar
백승민 committed
6
import { TypedRequest } from "../types";
백승민's avatar
백승민 committed
7
8
import { ObjectId } from "mongoose";
import formidable from "formidable";
백승민's avatar
백승민 committed
9

백승민's avatar
백승민 committed
10
11
export const createMainimg = asyncWrap(async (reqExp, res) => {
  const req = reqExp as TypedRequestAuth<{ userId: ObjectId }>;
Kim, MinGyu's avatar
Kim, MinGyu committed
12
  const { userId } = req.auth;
백승민's avatar
백승민 committed
13

백승민's avatar
백승민 committed
14
15
16
17
  const form = formidable({
    uploadDir: "uploads",
    keepExtensions: true,
    multiples: false,
백승민's avatar
백승민 committed
18
19
  });

백승민's avatar
백승민 committed
20
  form.parse(req, async (err, fields, files) => {
백승민's avatar
백승민 committed
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    if (!Array.isArray(files.mainimg)) {
      //파일 좁히기 중
      if (
        !(
          Array.isArray(fields.city) ||
          Array.isArray(fields.title) ||
          Array.isArray(fields.theme)
        )
      ) {
        const city = fields.city;
        const title = fields.title;
        const theme = fields.theme;
        const originalfilename = files.mainimg?.originalFilename;
        const newfilename = files.mainimg.newFilename;
        if (!(originalfilename === null || newfilename === undefined)) {
백승민's avatar
백승민 committed
36
          const imgRes = await mainimgDb.createMainimg(
백승민's avatar
백승민 committed
37
38
39
40
41
42
            { city, title, theme },
            {
              originalfilename,
              newfilename,
            }
          );
백승민's avatar
백승민 committed
43
44
45
46
47
          console.log(imgRes)
          return res.json(imgRes);
        
        }else{
          return res.send("에러")
백승민's avatar
백승민 committed
48
49
50
51
        }
      }
    }
  });
백승민's avatar
백승민 committed
52
53
});

백승민's avatar
백승민 committed
54

백승민's avatar
백승민 committed
55
export const getMainimg = asyncWrap(async (req, res) => {
백승민's avatar
백승민 committed
56
57
58
59
60
61
62
  const mainimgs = await mainimgDb.getMainimg();
  return res.json(mainimgs);
});

export const deleteMainimg = asyncWrap(async (req, res) => {
  const { imgId } = req.params;
  const deleteCount = await mainimgDb.deleteOneMainimg(imgId);
백승민's avatar
백승민 committed
63
  console.log(deleteCount);
백승민's avatar
백승민 committed
64
65
66

  return res.json(deleteCount);
});
백승민's avatar
백승민 committed
67

백승민's avatar
백승민 committed
68
69
70
71
72
73
74
75
export const updateMainimg = asyncWrap(async (reqExp, res) => {
  const req = reqExp as TypedRequestAuth<{ userId: ObjectId }>;

  const form = formidable({
    uploadDir: "uploads",
    keepExtensions: true,
    multiples: false,
  });
백승민's avatar
백승민 committed
76

백승민's avatar
백승민 committed
77
78
79
80
  form.parse(req, (err, fields, files) => {
    if (!Array.isArray(files.updatemainimg)) {
      //파일 좁히기 중
      if (
81
82
        !(
          Array.isArray(fields.id) ||
백승민's avatar
백승민 committed
83
84
85
86
87
88
89
90
91
          Array.isArray(fields.city) ||
          Array.isArray(fields.title) ||
          Array.isArray(fields.theme)
        )
      ) {
        const id = fields.id;
        const city = fields.city;
        const title = fields.title;
        const theme = fields.theme;
92
93
94
95
96
        console.log("error");
        if (!(files.updatemainimg === undefined)) {
          const originalfilename = files.updatemainimg?.originalFilename;
          const newfilename = files.updatemainimg.newFilename;
          if (!(originalfilename === null || newfilename === undefined)) {
백승민's avatar
백승민 committed
97
            const imgRes = mainimgDb.updateOneMainimg(
98
99
100
101
102
103
104
              id,
              theme,
              city,
              title,
              originalfilename,
              newfilename
            );
백승민's avatar
백승민 committed
105
            return res.json(imgRes);
106
107
          }
        } else {
백승민's avatar
백승민 committed
108
109
          const imgRes = mainimgDb.updateOneMainimg(id, theme, city, title);
          return res.json(imgRes);
백승민's avatar
백승민 committed
110
111
112
113
        }
      }
    }
  });
백승민's avatar
백승민 committed
114
});