diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 0611c77..1c358bc 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -11,7 +11,7 @@ datasource db { model Maintenance { id Int @id @default(autoincrement()) - reason String + reason String @default("") beginAt DateTime @default(now()) endAt DateTime @default(now()) createdAt DateTime @default(now()) @@ -21,24 +21,24 @@ model Maintenance { model Announcement { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) - content String + content String @default("") } model Category { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - slug String - name String + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + slug String @default("") + name String @default("") talents CategoriesOnTalents[] } model Talent { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) - logo String - name String @unique - website String - work String + logo String @default("") + name String @unique @default("") + website String @default("") + work String @default("") favorite Boolean @default(false) categories CategoriesOnTalents[] } @@ -56,24 +56,34 @@ model CategoriesOnTalents { model Post { id Int @id @default(autoincrement()) - slug String @unique + slug String @unique @default("") createdAt DateTime @default(now()) views Int @default(0) likes Int @default(0) } model Suggestion { - id Int @id @default(autoincrement()) - author String @unique - content String - added Boolean @default(false) - createdAt DateTime @default(now()) + id Int @id @default(autoincrement()) + email String @unique @default("") + content String @default("") + added Boolean @default(false) + createdAt DateTime @default(now()) } model Form { id Int @id @default(autoincrement()) - name String - email String - content String + name String @default("") + email String @default("") + content String @default("") + createdAt DateTime @default(now()) +} + +model GuestbookMessage { + id Int @id @default(autoincrement()) + message String @default("") + email String @unique @default("") + image String @default("") + username String @default("") + updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } diff --git a/src/components/header/MobileNavBar.vue b/src/components/header/MobileNavBar.vue index ceaefd2..905787a 100644 --- a/src/components/header/MobileNavBar.vue +++ b/src/components/header/MobileNavBar.vue @@ -36,9 +36,9 @@ const navs = [ icon: 'i-ph-shooting-star-bold', }, { - label: 'Bookmarks', - to: '/bookmarks', - icon: 'i-ph-bookmarks-bold', + label: 'Guestbook', + to: '/guestbook', + icon: 'i-material-symbols-book-2-outline', }, { label: 'Contact', diff --git a/src/composables/usePost.ts b/src/composables/usePost.ts deleted file mode 100644 index 7a3f40c..0000000 --- a/src/composables/usePost.ts +++ /dev/null @@ -1,32 +0,0 @@ -export async function usePost(slug: string) { - const { - data: post, - refresh: refreshPost, - } = useFetch('/api/article', { - method: 'POST', - body: { - slug, - }, - }) - - const likes = ref(post.value?.likes) - const like = async () => { - const { data } = await useFetch('/api/like', { method: 'PUT' }) - likes.value = data - } - - const views = ref(post.value!.views) - const view = async () => { - const { data } = await useFetch('/api/view', { method: 'PUT' }) - likes.value = data - } - - return { - post, - like, - view, - refreshPost, - likes: computed(() => likes.value), - views: computed(() => views.value), - } -} diff --git a/src/pages/guestbook.vue b/src/pages/guestbook.vue index 05e895f..6cede1b 100644 --- a/src/pages/guestbook.vue +++ b/src/pages/guestbook.vue @@ -4,6 +4,37 @@ import { providers } from '~~/types' useHead({ title: 'Sign my guestbook • Arthur Danjou', }) + +const { loggedIn, clear , user} = useUserSession() + +const { data: messages, refresh } = useFetch('/api/messages', { method: 'get' }) + +const toast = useToast() +const messageContent = ref('') +async function sign() { + if (messageContent.value.length < 7 || messageContent.value.length > 58) + return + + await $fetch('/api/message', { + method: 'post', + body: { + message: messageContent.value, + }, + }).then(() => { + toast.add({ + title: `Thank's for leaving a message!`, + icon: 'i-material-symbols-check-circle-outline-rounded', + timeout: 4000, + }) + }).catch(() => { + toast.add({ + title: 'An error occured when signing the book!', + color: 'red', + }) + }) + messageContent.value = '' + await refresh() +} diff --git a/src/pages/talents.vue b/src/pages/talents.vue index e0c6ed8..4bb0477 100644 --- a/src/pages/talents.vue +++ b/src/pages/talents.vue @@ -1,4 +1,5 @@