Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

edit and soft delete #29

Merged
merged 2 commits into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 42 additions & 30 deletions services/quest.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,29 @@ export default {
}[]> => {
const query = `
SELECT
quests.id,
quests.title,
quests.description,
quests.objectives,
quests.image_url,
categories.name AS category,
CASE
WHEN quests.id = ANY(users.completed_quests) THEN true
ELSE false
END AS completed
quests.id,
quests.title,
quests.description,
quests.objectives,
quests.image_url,
categories.name AS category,
su.username,
CASE
WHEN quests.id = ANY(users.completed_quests) THEN true
ELSE false
END AS completed
FROM
quests
quests
JOIN
categories ON quests.category_id = categories.id
categories ON quests.category_id = categories.id
LEFT JOIN
users ON users.id = $2
users su ON su.id = quests.suggested_by
LEFT JOIN
users ON users.id = $2
WHERE
soft_deleted IS NOT TRUE
ORDER BY
quests.id
quests.id
LIMIT 20 OFFSET (($1 - 1) * 20);
`;
const values = [page, userId];
Expand All @@ -60,21 +65,24 @@ export default {
deleted_by?: number;
}> => {
const query = `SELECT
q.id,
q.title,
q.description,
q.objectives,
q.image_url,
c.name AS category,
q.updated_at,
q.soft_deleted,
q.deleted_by
FROM
quests q
JOIN
categories c ON q.category_id = c.id
WHERE
q.id = $1;
q.id,
q.title,
q.description,
q.objectives,
q.image_url,
c.name AS category,
q.updated_at,
q.soft_deleted,
q.deleted_by,
su.username
FROM
quests q
JOIN
categories c ON q.category_id = c.id
LEFT JOIN
users su ON su.id = q.suggested_by
WHERE
q.id = $1;
`;
const values = [questId];

Expand All @@ -96,18 +104,22 @@ export default {
quests.description,
quests.objectives,
quests.image_url,
categories.name AS category
categories.name AS category,
su.username
FROM
quests
JOIN
categories ON quests.category_id = categories.id
LEFT JOIN
users su on su.id = quests.suggested_by
WHERE
quests.id NOT IN (
SELECT UNNEST(completed_quests)
FROM users
WHERE id = $1
)
AND category_id IS NOT NULL
AND soft_deleted IS NOT TRUE
ORDER BY RANDOM()
LIMIT 1;
`;
Expand Down
5 changes: 2 additions & 3 deletions validationSchemas/questSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,8 @@ export default {
description: Joi.string()
.min(1),
objectives: Joi.array()
.items(Joi.string())
.min(1),
imageUrl: Joi.string()
.items(Joi.string()),
image_url: Joi.string()
.min(1),
categoryId: Joi.number()
.min(1),
Expand Down
2 changes: 1 addition & 1 deletion validationSchemas/suggestionSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default {
.required()
.max(512),
objectives: Joi.array()
.items(Joi.string().min(1).max(20))
.items(Joi.string().min(1).max(128))
.required(),
categoryId: Joi.number()
.min(1)
Expand Down