mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-10 19:14:16 +00:00
194 lines
5.8 KiB
JavaScript
194 lines
5.8 KiB
JavaScript
import { Controller } from "linebridge/dist/server"
|
|
import { Schematized } from "../../lib"
|
|
|
|
import { CreatePost, ToogleLike, GetPostData, DeletePost, ToogleSavePost } from "./methods"
|
|
|
|
export default class PostsController extends Controller {
|
|
static refName = "PostsController"
|
|
//static useMiddlewares = ["withAuthentication"]
|
|
|
|
get = {
|
|
"/feed": {
|
|
middlewares: ["withOptionalAuthentication"],
|
|
fn: Schematized({
|
|
select: ["user_id"]
|
|
}, async (req, res) => {
|
|
let posts = await GetPostData({
|
|
limit: req.query?.limit,
|
|
skip: req.query?.trim,
|
|
from_user_id: req.query?.user_id,
|
|
for_user_id: req.user?._id.toString(),
|
|
savedOnly: req.query?.savedOnly,
|
|
})
|
|
|
|
return res.json(posts)
|
|
})
|
|
},
|
|
"/post": {
|
|
middlewares: ["withOptionalAuthentication"],
|
|
fn: Schematized({
|
|
select: ["post_id"],
|
|
required: ["post_id"]
|
|
}, async (req, res) => {
|
|
let post = await GetPostData({
|
|
post_id: req.query?.post_id,
|
|
for_user_id: req.user?._id.toString(),
|
|
}).catch((error) => {
|
|
res.status(404).json({ error: error.message })
|
|
|
|
return null
|
|
})
|
|
|
|
if (!post) return
|
|
|
|
return res.json(post)
|
|
})
|
|
},
|
|
}
|
|
|
|
put = {
|
|
|
|
}
|
|
|
|
post = {
|
|
"/post": {
|
|
middlewares: ["withAuthentication"],
|
|
fn: Schematized({
|
|
required: ["message"],
|
|
select: ["message", "additions", "type", "data"],
|
|
}, async (req, res) => {
|
|
const post = await CreatePost({
|
|
user_id: req.user.id,
|
|
message: req.selection.message,
|
|
additions: req.selection.additions,
|
|
type: req.selection.type,
|
|
data: req.selection.data,
|
|
})
|
|
|
|
return res.json(post)
|
|
})
|
|
},
|
|
"/toogle_like": {
|
|
middlewares: ["withAuthentication"],
|
|
fn: Schematized({
|
|
required: ["post_id"],
|
|
select: ["post_id", "to"],
|
|
}, async (req, res) => {
|
|
const post = await ToogleLike({
|
|
user_id: req.user._id.toString(),
|
|
post_id: req.selection.post_id,
|
|
to: req.selection.to,
|
|
}).catch((err) => {
|
|
res.status(400).json({
|
|
error: err.message
|
|
})
|
|
return false
|
|
})
|
|
|
|
if (!post) return
|
|
|
|
return res.json({
|
|
success: true,
|
|
post
|
|
})
|
|
})
|
|
},
|
|
"/post/:post_id/toogle_like": {
|
|
middlewares: ["withAuthentication"],
|
|
fn: Schematized({
|
|
select: ["to"],
|
|
}, async (req, res) => {
|
|
const post = await ToogleLike({
|
|
user_id: req.user._id.toString(),
|
|
post_id: req.params.post_id,
|
|
to: req.selection.to,
|
|
}).catch((err) => {
|
|
res.status(400).json({
|
|
error: err.message
|
|
})
|
|
return false
|
|
})
|
|
|
|
if (!post) return
|
|
|
|
return res.json({
|
|
success: true,
|
|
post
|
|
})
|
|
})
|
|
},
|
|
"/post/toogle_save": {
|
|
middlewares: ["withAuthentication"],
|
|
fn: Schematized({
|
|
required: ["post_id"],
|
|
select: ["post_id"],
|
|
}, async (req, res) => {
|
|
const post = await ToogleSavePost({
|
|
user_id: req.user._id.toString(),
|
|
post_id: req.selection.post_id,
|
|
}).catch((err) => {
|
|
res.status(400).json({
|
|
error: err.message
|
|
})
|
|
return false
|
|
})
|
|
|
|
if (!post) return
|
|
|
|
return res.json({
|
|
success: true,
|
|
post
|
|
})
|
|
})
|
|
},
|
|
"/post/:post_id/save": {
|
|
middlewares: ["withAuthentication"],
|
|
fn: async (req, res) => {
|
|
const post = await ToogleSavePost({
|
|
user_id: req.user._id.toString(),
|
|
post_id: req.params.post_id,
|
|
}).catch((err) => {
|
|
res.status(400).json({
|
|
error: err.message
|
|
})
|
|
return false
|
|
})
|
|
|
|
if (!post) return
|
|
|
|
return res.json({
|
|
success: true,
|
|
post
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
delete = {
|
|
"/post": {
|
|
middlewares: ["withAuthentication"],
|
|
fn: Schematized({
|
|
required: ["post_id"],
|
|
select: ["post_id"],
|
|
}, async (req, res) => {
|
|
const post = await DeletePost({
|
|
post_id: req.selection.post_id,
|
|
by_user_id: req.user._id.toString(),
|
|
}).catch((err) => {
|
|
res.status(400).json({
|
|
error: err.message
|
|
})
|
|
|
|
return false
|
|
})
|
|
|
|
if (!post) return
|
|
|
|
return res.json({
|
|
success: true,
|
|
post
|
|
})
|
|
})
|
|
},
|
|
}
|
|
} |