@@ -14,69 +14,62 @@ import { TaskToken } from '../../../objects/TaskToken.ts'
1414
1515type TokenBody = Static < typeof TokenMetadataSchema >
1616
17- const IPFS = TaskBoardIPFS . getInstance ( )
1817
19- export async function createTaskController (
20- request : FastifyRequest < { Body : TokenBody } > ,
21- reply : FastifyReply
22- ) {
23- try {
24- // The Task is part of the TokenMetadata
25- const token = TaskToken . fromJSON ( request . body )
26- const cid = await IPFS . addTask ( token )
27- return reply . code ( 201 ) . send ( { ...token . toJSON ( ) , createdAt : token . task . createdAt , ipfsCid : cid } )
28- } catch ( error ) {
29- request . log . error ( error )
30- return reply . code ( 500 ) . send ( {
31- error : 'Failed to create task' ,
32- message : 'Could not create task. Please try again later.'
33- } )
18+ export function createTaskController ( IPFS : TaskBoardIPFS ) {
19+ return async ( request : FastifyRequest < { Body : TokenBody } > , reply : FastifyReply ) => {
20+ try {
21+ const token = TaskToken . fromJSON ( request . body )
22+ const cid = await IPFS . addTask ( token )
23+ return reply . code ( 201 ) . send ( { ...token . toJSON ( ) , createdAt : token . task . createdAt , ipfsCid : cid } )
24+ } catch ( error ) {
25+ request . log . error ( error )
26+ return reply . code ( 500 ) . send ( {
27+ error : 'Failed to create task' ,
28+ message : 'Could not create task. Please try again later.'
29+ } )
30+ }
3431 }
35-
3632}
3733
34+ export function getTasksController ( IPFS : TaskBoardIPFS ) {
35+ return async ( request : FastifyRequest < { Querystring : { limit ?: number ; offset ?: number ; difficulty ?: string ; name ?: string } } > , reply : FastifyReply ) => {
36+ try {
37+ const { limit = 10 , offset = 0 , difficulty, name } = request . query
38+ const filters : any = { }
39+ if ( difficulty ) filters . difficulty = difficulty
40+ if ( name ) filters . name = name
3841
39- export async function getTasksController (
40- request : FastifyRequest < { Querystring : { limit ?: number ; offset ?: number ; difficulty ?: string } } > ,
41- reply : FastifyReply
42- ) {
43- try {
44- const { limit = 10 , offset = 0 , difficulty } = request . query
45- const filters : any = { }
46- if ( difficulty ) filters . difficulty = difficulty
42+ const tasks = await IPFS . getTasks ( limit , offset , filters )
4743
48- const tasks = await IPFS . getTasks ( limit , offset , filters )
49-
50- if ( tasks . length === 0 ) {
51- return reply . code ( 404 ) . send ( {
52- error : 'No tasks found' ,
53- message : 'No tasks match the provided criteria.'
54- } )
55- } else {
56- reply . code ( 200 ) . send ( tasks . map ( t => ( { ...t . toJSON ( ) , createdAt : t . task . createdAt , ipfsCid : t . task . ipfsCid } ) ) )
44+ if ( tasks . length === 0 ) {
45+ return reply . code ( 404 ) . send ( {
46+ error : 'No tasks found' ,
47+ message : 'No tasks match the provided criteria.'
48+ } )
49+ } else {
50+ reply . code ( 200 ) . send ( tasks . map ( t => ( { ...t . toJSON ( ) , createdAt : t . task . createdAt , ipfsCid : t . task . ipfsCid } ) ) )
51+ }
52+ } catch ( error ) {
53+ reply . code ( 500 ) . send ( {
54+ error : 'Failed to fetch tasks' ,
55+ message : 'Could not retrieve tasks. Please try again later.'
56+ } )
5757 }
58- } catch ( error ) {
59- reply . code ( 500 ) . send ( {
60- error : 'Failed to fetch tasks' ,
61- message : 'Could not retrieve tasks. Please try again later.'
62- } )
6358 }
6459}
6560
66-
67- export async function deleteTaskController (
68- request : FastifyRequest < { Params : { cid : string } } > ,
69- reply : FastifyReply
70- ) {
71- try {
72- const { cid } = request . params
73- await IPFS . deleteTask ( cid )
74- return reply . code ( 204 ) . send ( )
75- } catch ( error ) {
76- request . log . error ( error )
77- return reply . code ( 500 ) . send ( {
78- error : 'Failed to delete task' ,
79- message : 'Could not delete task. Please try again later.'
80- } )
61+ export function deleteTaskController ( IPFS : TaskBoardIPFS ) {
62+ return async ( request : FastifyRequest < { Params : { cid : string } } > , reply : FastifyReply ) => {
63+ try {
64+ const { cid } = request . params
65+ await IPFS . deleteTask ( cid )
66+ return reply . code ( 204 ) . send ( )
67+ } catch ( error ) {
68+ request . log . error ( error )
69+ return reply . code ( 500 ) . send ( {
70+ error : 'Failed to delete task' ,
71+ message : 'Could not delete task. Please try again later.'
72+ } )
73+ }
8174 }
8275}
0 commit comments