aboutsummaryrefslogtreecommitdiff
path: root/pages/api/user/update/episode.js
blob: bee98ab9e5c7e7a59c757fa584871ccfcb909178 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { getServerSession } from "next-auth";
import { authOptions } from "../../auth/[...nextauth]";

import {
  createList,
  deleteEpisode,
  deleteList,
  getEpisode,
  updateUserEpisode,
} from "@/prisma/user";

export default async function handler(req, res) {
  const session = await getServerSession(req, res, authOptions);
  if (session) {
    // Signed in
    try {
      switch (req.method) {
        case "POST": {
          const { name, id } = JSON.parse(req.body);

          if (session.user.name !== name) {
            return res.status(401).json({ message: "Unauthorized" });
          } else {
            const episode = await createList(name, id);
            if (!episode) {
              return res
                .status(200)
                .json({ message: "Episode is already created" });
            } else {
              return res.status(201).json(episode);
            }
          }
        }
        case "PUT": {
          const {
            name,
            id,
            watchId,
            title,
            image,
            number,
            duration,
            timeWatched,
            aniTitle,
            provider,
            nextId,
            nextNumber,
            dub,
          } = JSON.parse(req.body);
          const episode = await updateUserEpisode({
            name,
            id,
            watchId,
            title,
            image,
            number,
            duration,
            timeWatched,
            aniTitle,
            provider,
            nextId,
            nextNumber,
            dub,
          });
          if (!episode) {
            return res
              .status(200)
              .json({ message: "Episode is already there" });
          } else {
            return res.status(200).json(episode);
          }
        }
        case "GET": {
          const { name, id } = req.query;
          // console.log(req.query);
          const episode = await getEpisode(name, id);
          if (!episode) {
            return res.status(404).json({ message: "Episode not found" });
          } else {
            return res.status(200).json(episode);
          }
        }
        case "DELETE": {
          const { name, id, aniId } = req.body;
          if (session.user.name !== name) {
            return res.status(401).json({ message: "Unauthorized" });
          } else {
            if (id) {
              const episode = await deleteEpisode(name, id);
              if (!episode) {
                return res.status(404).json({ message: "Episode not found" });
              } else {
                return res.status(200).json({ message: "Episode deleted" });
              }
            } else if (aniId) {
              const episode = await deleteList(name, aniId);
              if (!episode) {
                return res.status(404).json({ message: "Episode not found" });
              } else {
                return res.status(200).json({ message: "Episode deleted" });
              }
            }
          }
        }
      }
    } catch (error) {
      console.log(error);
      return res.status(500).json({ message: "Internal server error" });
    }
  } else {
    // Not Signed in
    res.status(401).json({ message: "Unauthorized" });
  }
  res.end();
}