@@ -412,13 +412,15 @@ def add_list_queries(schema: GraphQLSchema):
412
412
return schema
413
413
414
414
415
- def add_scalar_filters (schema : GraphQLSchema ):
415
+ def add_scalar_filters (schema : GraphQLSchema , config : dict ):
416
416
"""
417
417
Add filter inputs for GrahpQL types (Hasura-style).
418
418
:param schema:
419
419
:return:
420
420
"""
421
421
make = ''
422
+ manually_handled_scalars = ['Int' , 'Float' , 'String' , 'Boolean' , 'ID' ]
423
+
422
424
# Numeric
423
425
scalars = ['Int' , 'Float' ]
424
426
for scalar in scalars :
@@ -471,9 +473,37 @@ def add_scalar_filters(schema: GraphQLSchema):
471
473
' _neq: Boolean ' \
472
474
'} '
473
475
476
+ # Date
477
+ if config .get ('generation' ).get ('generate_date' ):
478
+ manually_handled_scalars .append ('Date' )
479
+ make += 'input _DateFilter {' \
480
+ ' _eq: Date ' \
481
+ ' _neq: Date ' \
482
+ ' _in: [Date] ' \
483
+ ' _nin: [Date] ' \
484
+ ' _gt: Date ' \
485
+ ' _egt: Date ' \
486
+ ' _lt: Date ' \
487
+ ' _elt: Date ' \
488
+ '} '
489
+
490
+ # DateTime
491
+ if config .get ('generation' ).get ('generate_datetime' ):
492
+ manually_handled_scalars .append ('DateTime' )
493
+ make += 'input _DateTimeFilter {' \
494
+ ' _eq: DateTime ' \
495
+ ' _neq: DateTime ' \
496
+ ' _in: [DateTime] ' \
497
+ ' _nin: [DateTime] ' \
498
+ ' _gt: DateTime ' \
499
+ ' _egt: DateTime ' \
500
+ ' _lt: DateTime ' \
501
+ ' _elt: DateTime ' \
502
+ '} '
503
+
474
504
# Schema-defined scalars
475
505
for scalar_name , scalar in schema .type_map .items ():
476
- if not is_scalar_type (scalar ) or scalar_name in [ 'Int' , 'Float' , 'String' , 'Boolean' , 'ID' ] :
506
+ if not is_scalar_type (scalar ) or scalar_name in manually_handled_scalars :
477
507
continue
478
508
479
509
make += f'input _{ scalar_name } Filter {{' \
@@ -488,7 +518,7 @@ def add_scalar_filters(schema: GraphQLSchema):
488
518
return schema
489
519
490
520
491
- def add_type_filters (schema : GraphQLSchema ):
521
+ def add_type_filters (schema : GraphQLSchema , field_for_creation_date , field_for_last_update_date ):
492
522
"""
493
523
Add filter types (Hasura-style filters).
494
524
:param schema: schema
@@ -505,7 +535,7 @@ def add_type_filters(schema: GraphQLSchema):
505
535
f' _not: _FilterFor{ _type .name } '
506
536
507
537
for field_name , field in _type .fields .items ():
508
- if field_name [0 ] == '_' :
538
+ if field_name [0 ] == '_' and not ( field_for_creation_date and field_name == '_creationDate' ) and not ( field_for_last_update_date and field_name == '_lastUpdateDate' ) :
509
539
continue
510
540
511
541
# remove outer required
@@ -565,9 +595,9 @@ def add_edge_objects(schema: GraphQLSchema, field_for_creation_date, field_for_l
565
595
creation_date_string = ''
566
596
last_update_date_string = ''
567
597
if field_for_creation_date :
568
- creation_date_string = '_creationDate: Date !'
598
+ creation_date_string = '_creationDate: DateTime !'
569
599
if field_for_last_update_date :
570
- last_update_date_string = '_lastUpdateDate: Date '
600
+ last_update_date_string = '_lastUpdateDate: DateTime '
571
601
for _type in schema .type_map .values ():
572
602
if not is_schema_defined_type (_type ) or is_interface_type (_type ):
573
603
continue
0 commit comments