1+ import { Router , json } from 'express' ;
2+ import handleError from '../utils/handleError.js' ;
3+ import { validate , schema } from '../utils/validation/index.js' ;
4+ import models from '#models' ;
5+ import logger from '#lib/logger.js' ;
6+
7+ const router = Router ( ) ;
8+
9+ router . get ( '/' , validate ( schema . formQuery , { reqParts : [ 'query' ] } ) , async ( req , res ) => {
10+ try {
11+ logger . info ( 'Form query validated' , req . context . logSignal ) ;
12+ const r = await models . form . query ( req . payload ) ;
13+ if ( r . error ) {
14+ throw r . error ;
15+ }
16+ logger . info ( 'Form query successful' , req . context . logSignal , { resultCount : r . res . total_count } ) ;
17+ res . status ( 200 ) . json ( r . res ) ;
18+ } catch ( e ) {
19+ return handleError ( res , req , e ) ;
20+ }
21+ } ) ;
22+
23+ router . get ( '/:idOrName' , async ( req , res ) => {
24+ try {
25+ const r = await models . form . get ( req . params . idOrName , { errorOnMissing : true } ) ;
26+ if ( r . error ) {
27+ throw r . error ;
28+ }
29+ logger . info ( 'Form get successful' , req . context . logSignal , { formId : r . res . form_id } ) ;
30+ if ( ! req . query . include_items ) {
31+ delete r . res . items ;
32+ }
33+ res . status ( 200 ) . json ( r . res ) ;
34+ } catch ( e ) {
35+ return handleError ( res , req , e ) ;
36+ }
37+ } ) ;
38+
39+ // create form
40+ router . post ( '/' , json ( ) , validate ( schema . formCreate , { reqParts : [ 'body' ] } ) , async ( req , res ) => {
41+ try {
42+ logger . info ( 'Form validated' , req . context . logSignal ) ;
43+ const r = await models . form . create ( req . payload ) ;
44+ if ( r . error ) {
45+ throw r . error ;
46+ }
47+ logger . info ( 'Form created' , req . context . logSignal , { form : r . res } ) ;
48+ res . status ( 200 ) . json ( r . res ) ;
49+ } catch ( e ) {
50+ return handleError ( res , req , e ) ;
51+ }
52+ } ) ;
53+
54+ router . patch ( '/' , json ( ) , validate ( schema . formUpdate , { reqParts : [ 'body' ] } ) , async ( req , res ) => {
55+ try {
56+ logger . info ( 'Form update validated' , req . context . logSignal , { formId : req . payload . form_id } ) ;
57+ const r = await models . form . patch ( req . payload . form_id , req . payload ) ;
58+ if ( r . error ) {
59+ throw r . error ;
60+ }
61+ logger . info ( 'Form update successful' , req . context . logSignal , { form : r . res } ) ;
62+ res . status ( 200 ) . json ( r . res ) ;
63+ } catch ( e ) {
64+ return handleError ( res , req , e ) ;
65+ }
66+ } ) ;
67+
68+ router . delete ( '/:idOrName' , validate ( schema . formIdOrNameSchema , { reqParts : [ 'params' ] } ) , async ( req , res ) => {
69+ try {
70+ logger . info ( 'Form delete validated' , req . context . logSignal , { formIdOrName : req . params . idOrName } ) ;
71+ const r = await models . form . delete ( req . params . idOrName ) ;
72+ if ( r . error ) {
73+ throw r . error ;
74+ }
75+ logger . info ( 'Form delete successful' , req . context . logSignal , { form : r . res } ) ;
76+ res . status ( 200 ) . json ( r . res ) ;
77+ } catch ( e ) {
78+ return handleError ( res , req , e ) ;
79+ }
80+ } ) ;
81+
82+
83+ export default router ;
0 commit comments