mirror of
https://github.com/ArthurDanjou/website.git
synced 2026-01-14 20:19:35 +01:00
@@ -1,4 +1,4 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
return await $fetch(`https://api.lanyard.rest/v1/users/${config.discordUserId}`)
|
||||
const config = useRuntimeConfig(event)
|
||||
return await $fetch(`https://api.lanyard.rest/v1/users/${config.discordUserId}`)
|
||||
})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export default defineEventHandler(async () => {
|
||||
return useDB().query.announcements.findFirst({
|
||||
orderBy: (announcement, { asc }) => [asc(announcement.createdAt)],
|
||||
})
|
||||
return useDB().query.announcements.findFirst({
|
||||
orderBy: (announcement, { asc }) => [asc(announcement.createdAt)],
|
||||
})
|
||||
})
|
||||
|
||||
@@ -3,14 +3,14 @@ import {z} from 'zod'
|
||||
const PostSchema = z.object({ slug: z.string() }).parse
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { slug } = await readValidatedBody(event, PostSchema)
|
||||
return useDB().insert(tables.posts).values({
|
||||
slug,
|
||||
}).onConflictDoUpdate({
|
||||
target: tables.posts.id,
|
||||
set: {
|
||||
views: sql`${tables.posts.views}
|
||||
const { slug } = await readValidatedBody(event, PostSchema)
|
||||
return useDB().insert(tables.posts).values({
|
||||
slug,
|
||||
}).onConflictDoUpdate({
|
||||
target: tables.posts.id,
|
||||
set: {
|
||||
views: sql`${tables.posts.views}
|
||||
+ 1`,
|
||||
},
|
||||
})
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { favorite, category } = getQuery(event)
|
||||
const { favorite, category } = getQuery(event)
|
||||
|
||||
const bookmarks = await useDB().query.bookmarks
|
||||
.findMany({
|
||||
orderBy: [asc(tables.talents.id)],
|
||||
with: {
|
||||
bookmarkCategories: {
|
||||
with: {
|
||||
category: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
const bookmarks = await useDB().query.bookmarks
|
||||
.findMany({
|
||||
orderBy: [asc(tables.talents.id)],
|
||||
with: {
|
||||
bookmarkCategories: {
|
||||
with: {
|
||||
category: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
return bookmarks.filter(bookmark =>
|
||||
(category === 'all' || bookmark.bookmarkCategories.some(cat => cat.category.slug === category))
|
||||
&& (favorite === 'false' || bookmark.favorite),
|
||||
)
|
||||
return bookmarks.filter(bookmark =>
|
||||
(category === 'all' || bookmark.bookmarkCategories.some(cat => cat.category.slug === category))
|
||||
&& (favorite === 'false' || bookmark.favorite),
|
||||
)
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { type } = getQuery<{ type: 'talent' | 'bookmark' }>(event)
|
||||
return useDB().select().from(tables.categories).where(eq(tables.categories.type, type))
|
||||
const { type } = getQuery<{ type: 'talent' | 'bookmark' }>(event)
|
||||
return useDB().select().from(tables.categories).where(eq(tables.categories.type, type))
|
||||
})
|
||||
|
||||
@@ -3,11 +3,11 @@ import {z} from 'zod'
|
||||
const PostSchema = z.object({ slug: z.string() }).parse
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { slug } = await readValidatedBody(event, PostSchema)
|
||||
return useDB().update(tables.posts)
|
||||
.set({
|
||||
likes: sql`${tables.posts.likes}
|
||||
const { slug } = await readValidatedBody(event, PostSchema)
|
||||
return useDB().update(tables.posts)
|
||||
.set({
|
||||
likes: sql`${tables.posts.likes}
|
||||
+ 1`,
|
||||
})
|
||||
.where(eq(tables.posts.slug, slug))
|
||||
})
|
||||
.where(eq(tables.posts.slug, slug))
|
||||
})
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
export default defineEventHandler(async () => {
|
||||
const maintenance = await useDB().query.maintenances.findFirst({
|
||||
orderBy: [asc(tables.maintenances.createdAt)],
|
||||
})
|
||||
let enabled = true
|
||||
const maintenance = await useDB().query.maintenances.findFirst({
|
||||
orderBy: [asc(tables.maintenances.createdAt)],
|
||||
})
|
||||
let enabled = true
|
||||
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
enabled = false
|
||||
}
|
||||
else {
|
||||
const today = new Date()
|
||||
enabled = !!maintenance
|
||||
&& maintenance.enabled
|
||||
&& new Date(maintenance.beginAt).getTime() < today.getTime()
|
||||
&& new Date(maintenance.endAt).getTime() > today.getTime()
|
||||
}
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
enabled = false
|
||||
}
|
||||
else {
|
||||
const today = new Date()
|
||||
enabled = !!maintenance
|
||||
&& maintenance.enabled
|
||||
&& new Date(maintenance.beginAt).getTime() < today.getTime()
|
||||
&& new Date(maintenance.endAt).getTime() > today.getTime()
|
||||
}
|
||||
|
||||
return {
|
||||
enabled,
|
||||
maintenance,
|
||||
}
|
||||
return {
|
||||
enabled,
|
||||
maintenance,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import {z} from 'zod'
|
||||
|
||||
const MessageValidator = z.object({
|
||||
id: z.number(),
|
||||
id: z.number(),
|
||||
}).parse
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { id } = await readValidatedBody(event, MessageValidator)
|
||||
const { user } = await requireUserSession(event)
|
||||
if (!user.admin)
|
||||
throw createError({ statusCode: 400, message: 'You need the permission to delete a message!' })
|
||||
return useDB().delete(tables.guestbookMessages).where(eq(tables.guestbookMessages.id, id))
|
||||
const { id } = await readValidatedBody(event, MessageValidator)
|
||||
const { user } = await requireUserSession(event)
|
||||
if (!user.admin)
|
||||
throw createError({ statusCode: 400, message: 'You need the permission to delete a message!' })
|
||||
return useDB().delete(tables.guestbookMessages).where(eq(tables.guestbookMessages.id, id))
|
||||
})
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
import {z} from 'zod'
|
||||
|
||||
const MessageValidator = z.object({
|
||||
message: z.string(),
|
||||
message: z.string(),
|
||||
}).parse
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { message } = await readValidatedBody(event, MessageValidator)
|
||||
const { user } = await requireUserSession(event)
|
||||
const config = useRuntimeConfig(event)
|
||||
const { message } = await readValidatedBody(event, MessageValidator)
|
||||
const { user } = await requireUserSession(event)
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
await sendDiscordWebhookMessage(config, {
|
||||
title: 'New guestbook message ✨',
|
||||
description: `**${user.username}** has signed the book : "*${message}*"`,
|
||||
color: 15893567,
|
||||
})
|
||||
return useDB().insert(tables.guestbookMessages)
|
||||
.values({
|
||||
message,
|
||||
email: user.email,
|
||||
username: user.username,
|
||||
image: user.picture,
|
||||
})
|
||||
.onConflictDoUpdate({
|
||||
target: tables.guestbookMessages.email,
|
||||
set: {
|
||||
message,
|
||||
},
|
||||
})
|
||||
await sendDiscordWebhookMessage(config, {
|
||||
title: 'New guestbook message ✨',
|
||||
description: `**${user.username}** has signed the book : "*${message}*"`,
|
||||
color: 15893567,
|
||||
})
|
||||
return useDB().insert(tables.guestbookMessages)
|
||||
.values({
|
||||
message,
|
||||
email: user.email,
|
||||
username: user.username,
|
||||
image: user.picture,
|
||||
})
|
||||
.onConflictDoUpdate({
|
||||
target: tables.guestbookMessages.email,
|
||||
set: {
|
||||
message,
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
export default defineEventHandler(async () => {
|
||||
return useDB().select().from(tables.guestbookMessages).orderBy(asc(tables.guestbookMessages.createdAt))
|
||||
return useDB().select().from(tables.guestbookMessages).orderBy(asc(tables.guestbookMessages.createdAt))
|
||||
})
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
const coding = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeCodig}.json`)
|
||||
const editors = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeEditors}.json`)
|
||||
const os = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeOs}.json`)
|
||||
const languages = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeLanguages}.json`)
|
||||
return {
|
||||
coding,
|
||||
editors,
|
||||
os,
|
||||
languages,
|
||||
}
|
||||
const config = useRuntimeConfig(event)
|
||||
const coding = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeCodig}.json`)
|
||||
const editors = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeEditors}.json`)
|
||||
const os = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeOs}.json`)
|
||||
const languages = await $fetch(`https://wakatime.com/share/${config.wakatimeUserId}/${config.wakatimeLanguages}.json`)
|
||||
return {
|
||||
coding,
|
||||
editors,
|
||||
os,
|
||||
languages,
|
||||
}
|
||||
}, {
|
||||
maxAge: 60 * 60 * 3, // 3 hours,
|
||||
maxAge: 60 * 60 * 3, // 3 hours,
|
||||
})
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
import {z} from 'zod'
|
||||
|
||||
const SuggestionValidator = z.object({
|
||||
content: z.string(),
|
||||
content: z.string(),
|
||||
}).parse
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { content } = await readValidatedBody(event, SuggestionValidator)
|
||||
const { user } = await requireUserSession(event)
|
||||
const config = useRuntimeConfig(event)
|
||||
const { content } = await readValidatedBody(event, SuggestionValidator)
|
||||
const { user } = await requireUserSession(event)
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
await sendDiscordWebhookMessage(config, {
|
||||
title: 'New suggestion ✨',
|
||||
description: `**${user.username}** has requested **${content}** for the talents page.`,
|
||||
color: 15237114,
|
||||
})
|
||||
await sendDiscordWebhookMessage(config, {
|
||||
title: 'New suggestion ✨',
|
||||
description: `**${user.username}** has requested **${content}** for the talents page.`,
|
||||
color: 15237114,
|
||||
})
|
||||
|
||||
return useDB().insert(tables.suggestions)
|
||||
.values({
|
||||
email: user.email,
|
||||
content,
|
||||
})
|
||||
.onConflictDoUpdate({
|
||||
target: tables.suggestions.email,
|
||||
set: {
|
||||
content,
|
||||
},
|
||||
setWhere: sql`${tables.suggestions.email}
|
||||
return useDB().insert(tables.suggestions)
|
||||
.values({
|
||||
email: user.email,
|
||||
content,
|
||||
})
|
||||
.onConflictDoUpdate({
|
||||
target: tables.suggestions.email,
|
||||
set: {
|
||||
content,
|
||||
},
|
||||
setWhere: sql`${tables.suggestions.email}
|
||||
=
|
||||
${user.email}`,
|
||||
}).returning({
|
||||
content: tables.suggestions.content,
|
||||
})
|
||||
}).returning({
|
||||
content: tables.suggestions.content,
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { favorite, category } = getQuery(event)
|
||||
const { favorite, category } = getQuery(event)
|
||||
|
||||
const talents = await useDB().query.talents
|
||||
.findMany({
|
||||
orderBy: [asc(tables.talents.id)],
|
||||
with: {
|
||||
talentCategories: {
|
||||
with: {
|
||||
category: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
const talents = await useDB().query.talents
|
||||
.findMany({
|
||||
orderBy: [asc(tables.talents.id)],
|
||||
with: {
|
||||
talentCategories: {
|
||||
with: {
|
||||
category: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
return talents.filter(talent =>
|
||||
(category === 'all' || talent.talentCategories.some(cat => cat.category.slug === category))
|
||||
&& (favorite === 'false' || talent.favorite),
|
||||
)
|
||||
return talents.filter(talent =>
|
||||
(category === 'all' || talent.talentCategories.some(cat => cat.category.slug === category))
|
||||
&& (favorite === 'false' || talent.favorite),
|
||||
)
|
||||
})
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import {z} from 'zod'
|
||||
import { z } from 'zod'
|
||||
|
||||
const PostSchema = z.object({ slug: z.string() }).parse
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { slug } = await readValidatedBody(event, PostSchema)
|
||||
return useDB().update(tables.posts)
|
||||
.set({
|
||||
views: sql`${tables.posts.views}
|
||||
const { slug } = await readValidatedBody(event, PostSchema)
|
||||
return useDB().update(tables.posts)
|
||||
.set({
|
||||
views: sql`${tables.posts.views}
|
||||
+ 1`,
|
||||
})
|
||||
.where(eq(tables.posts.slug, slug))
|
||||
})
|
||||
.where(eq(tables.posts.slug, slug))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user