Resume + Projects done
This commit is contained in:
19
api/src/graphql/resume.sdl.ts
Normal file
19
api/src/graphql/resume.sdl.ts
Normal file
@ -0,0 +1,19 @@
|
||||
export const schema = gql`
|
||||
type Resume {
|
||||
id: Int!
|
||||
fileId: URL!
|
||||
}
|
||||
|
||||
type Query {
|
||||
resume: Resume @skipAuth
|
||||
}
|
||||
|
||||
input CreateResumeInput {
|
||||
fileId: URL!
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
createResume(input: CreateResumeInput!): Resume! @requireAuth
|
||||
deleteResume: Resume! @requireAuth
|
||||
}
|
||||
`
|
25
api/src/graphql/titles.sdl.ts
Normal file
25
api/src/graphql/titles.sdl.ts
Normal file
@ -0,0 +1,25 @@
|
||||
export const schema = gql`
|
||||
type Title {
|
||||
id: Int!
|
||||
title: String!
|
||||
}
|
||||
|
||||
type Query {
|
||||
titles: [Title!]! @skipAuth
|
||||
title(id: Int!): Title @skipAuth
|
||||
}
|
||||
|
||||
input CreateTitleInput {
|
||||
title: String!
|
||||
}
|
||||
|
||||
input UpdateTitleInput {
|
||||
title: String
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
createTitle(input: CreateTitleInput!): Title! @requireAuth
|
||||
updateTitle(id: Int!, input: UpdateTitleInput!): Title! @requireAuth
|
||||
deleteTitle(id: Int!): Title! @requireAuth
|
||||
}
|
||||
`
|
42
api/src/services/resume/resume.ts
Normal file
42
api/src/services/resume/resume.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import type { QueryResolvers, MutationResolvers } from 'types/graphql'
|
||||
|
||||
import { isProduction } from '@redwoodjs/api/logger'
|
||||
import { ValidationError } from '@redwoodjs/graphql-server'
|
||||
|
||||
import { db } from 'src/lib/db'
|
||||
|
||||
const address = isProduction
|
||||
? process.env.ADDRESS_PROD
|
||||
: process.env.ADDRESS_DEV
|
||||
|
||||
export const resume: QueryResolvers['resume'] = async () => {
|
||||
const resume = await db.resume.findFirst()
|
||||
|
||||
if (resume) return resume
|
||||
else
|
||||
return {
|
||||
id: -1,
|
||||
fileId: `${address}/no_resume.pdf`,
|
||||
}
|
||||
}
|
||||
|
||||
export const createResume: MutationResolvers['createResume'] = async ({
|
||||
input,
|
||||
}) => {
|
||||
if (await db.resume.findFirst())
|
||||
throw new ValidationError('Resume already exists')
|
||||
else
|
||||
return db.resume.create({
|
||||
data: input,
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteResume: MutationResolvers['deleteResume'] = async () => {
|
||||
const resume = await db.resume.findFirst()
|
||||
|
||||
if (!resume) throw new ValidationError('Resume does not exist')
|
||||
else
|
||||
return db.resume.delete({
|
||||
where: { id: resume.id },
|
||||
})
|
||||
}
|
26
api/src/services/titles/titles.ts
Normal file
26
api/src/services/titles/titles.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import type { QueryResolvers, MutationResolvers } from 'types/graphql'
|
||||
|
||||
import { db } from 'src/lib/db'
|
||||
|
||||
export const titles: QueryResolvers['titles'] = () => db.title.findMany()
|
||||
|
||||
export const title: QueryResolvers['title'] = ({ id }) =>
|
||||
db.title.findUnique({
|
||||
where: { id },
|
||||
})
|
||||
|
||||
export const createTitle: MutationResolvers['createTitle'] = ({ input }) =>
|
||||
db.title.create({
|
||||
data: input,
|
||||
})
|
||||
|
||||
export const updateTitle: MutationResolvers['updateTitle'] = ({ id, input }) =>
|
||||
db.title.update({
|
||||
data: input,
|
||||
where: { id },
|
||||
})
|
||||
|
||||
export const deleteTitle: MutationResolvers['deleteTitle'] = ({ id }) =>
|
||||
db.title.delete({
|
||||
where: { id },
|
||||
})
|
Reference in New Issue
Block a user