| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import {
- checkToken,
- makeErrorResponse,
- makeSuccessResponse,
- } from "utils/server.ts";
- import { uid } from "usid";
- import { define } from "utils/state.ts";
- import { del, find, insert, update } from "utils/db.ts";
- export const handler = define.handlers({
- async GET(ctx) {
- const req = ctx.req;
- const reqJson = await req.json();
- const id = reqJson.id;
- const tokenUserId = checkToken(req);
- if (id) {
- const post = find(
- "Post",
- tokenUserId ? { id, user_id: tokenUserId } : { id, shared: 1 },
- ["title", "content"],
- );
- if (post.length > 0) {
- return makeSuccessResponse({
- title: post[0]["title"] as string,
- content: post[0]["content"] as string,
- });
- }
- }
- return makeErrorResponse();
- },
- async POST(ctx) {
- const req = ctx.req;
- const reqJson = await req.json();
- const title = reqJson.title || "";
- const content = reqJson.content || "";
- const tokenUserId = checkToken(req);
- if (tokenUserId) {
- const postId = uid(12);
- const post = insert("Post", {
- id: postId,
- title,
- content,
- user_id: tokenUserId,
- shared: 0,
- });
- if (post.length > 0) {
- return makeSuccessResponse(post[0]["id"] as string);
- }
- }
- return makeErrorResponse();
- },
- async PUT(ctx) {
- const req = ctx.req;
- const reqJson = await req.json();
- const id = reqJson.id;
- const title = reqJson.title;
- const content = reqJson.content;
- const tokenUserId = checkToken(req);
- if (tokenUserId && id && (title || content)) {
- const post = find("Post", { id, user_id: tokenUserId });
- if (post.length > 0) {
- const updateObject: { [key: string]: string } = {};
- if (title) updateObject["title"] = title;
- if (content) updateObject["content"] = content;
- const newPost = update("Post", id, updateObject);
- if (newPost.length > 0) {
- return makeSuccessResponse(true);
- }
- }
- }
- return makeErrorResponse();
- },
- async DELETE(ctx) {
- const req = ctx.req;
- const reqJson = await req.json();
- const id = reqJson.id;
- const tokenUserId = checkToken(req);
- if (tokenUserId && id) {
- const flag = del("Post", { id, user_id: tokenUserId });
- if (flag) {
- return makeSuccessResponse(true);
- }
- }
- return makeErrorResponse();
- },
- });
|