72 lines
2.6 KiB
TypeScript
72 lines
2.6 KiB
TypeScript
import { FastifyInstance } from 'fastify'
|
|
import { StaffTimeEntryConnect } from '../../types/staff'
|
|
|
|
export default async function staffTimeConnectRoutes(server: FastifyInstance) {
|
|
|
|
// ▶ Connect anlegen
|
|
server.post<{ Params: { id: string }, Body: Omit<StaffTimeEntryConnect, 'id' | 'time_entry_id'> }>(
|
|
'/staff/time/:id/connects',
|
|
async (req, reply) => {
|
|
const { id } = req.params
|
|
const { started_at, stopped_at, project_id, customer_id, task_id, ticket_id, notes } = req.body
|
|
|
|
const { data, error } = await server.supabase
|
|
.from('staff_time_entry_connects')
|
|
.insert([{ time_entry_id: id, started_at, stopped_at, project_id, customer_id, task_id, ticket_id, notes }])
|
|
.select()
|
|
.maybeSingle()
|
|
|
|
if (error) return reply.code(400).send({ error: error.message })
|
|
return reply.send(data)
|
|
}
|
|
)
|
|
|
|
// ▶ Connects abrufen
|
|
server.get<{ Params: { id: string } }>(
|
|
'/staff/time/:id/connects',
|
|
async (req, reply) => {
|
|
const { id } = req.params
|
|
const { data, error } = await server.supabase
|
|
.from('staff_time_entry_connects')
|
|
.select('*')
|
|
.eq('time_entry_id', id)
|
|
.order('started_at', { ascending: true })
|
|
|
|
if (error) return reply.code(400).send({ error: error.message })
|
|
return reply.send(data)
|
|
}
|
|
)
|
|
|
|
// ▶ Connect aktualisieren
|
|
server.patch<{ Params: { connectId: string }, Body: Partial<StaffTimeEntryConnect> }>(
|
|
'/staff/time/connects/:connectId',
|
|
async (req, reply) => {
|
|
const { connectId } = req.params
|
|
const { data, error } = await server.supabase
|
|
.from('staff_time_entry_connects')
|
|
.update({ ...req.body, updated_at: new Date().toISOString() })
|
|
.eq('id', connectId)
|
|
.select()
|
|
.maybeSingle()
|
|
|
|
if (error) return reply.code(400).send({ error: error.message })
|
|
return reply.send(data)
|
|
}
|
|
)
|
|
|
|
// ▶ Connect löschen
|
|
server.delete<{ Params: { connectId: string } }>(
|
|
'/staff/time/connects/:connectId',
|
|
async (req, reply) => {
|
|
const { connectId } = req.params
|
|
const { error } = await server.supabase
|
|
.from('staff_time_entry_connects')
|
|
.delete()
|
|
.eq('id', connectId)
|
|
|
|
if (error) return reply.code(400).send({ error: error.message })
|
|
return reply.send({ success: true })
|
|
}
|
|
)
|
|
}
|