import {
  BaseModel,
  BooleanField,
  DateField,
  FloatField,
  IntField,
  NumericField,
  JSONField,
  BytesField,
  EnumField,
  StringField,
  ObjectType
} from '@joystream/warthog';
import BN from 'bn.js'
import { InputType, Field } from 'type-graphql';

{{#jsonFields}}
  {{#fields}}
      {{#is.enum}}
        import { {{tsType}} } from '../enums/enums';
        export { {{tsType}} }
      {{/is.enum}}
  {{/fields}}
{{/jsonFields}}


{{#jsonFields}}
@InputType('{{name}}Input')
@ObjectType()
export class {{name}} {
  {{#fields}}
    {{#is.scalar}}
      @{{decorator}}({
        {{^required}}nullable: true,{{/required}}
        {{#description}}description: `{{{description}}}`,{{/description}}
        {{#unique}}unique: true,{{/unique}}
      })
      {{camelName}}{{^required}}?{{/required}}{{#required}}!{{/required}}: {{tsType}};
    {{/is.scalar}}

    {{#is.enum}}
      @EnumField('{{tsType}}', {{tsType}}, { 
        {{^required}}nullable: true,{{/required}} 
        {{#description}}description: `{{{description}}}`{{/description}} })
      {{camelName}}{{^required}}?{{/required}}{{#required}}!{{/required}}:{{tsType}} 
    {{/is.enum}}
    
    {{#is.json}}
    @Field(() => {{#array}}[{{/array}}{{tsType}}{{#array}}]{{/array}}, {{^required}}{ nullable: true }{{/required}})
    {{camelName}}{{^required}}?{{/required}}{{#required}}!{{/required}}: {{tsType}}{{#array}}[]{{/array}}
    {{/is.json}}
    
  {{/fields}}
}

{{/jsonFields}}