one_to_one_map = {
    "String": ("str", "''"),
    "Int": ("int", "0"),
    "Float": ("float", "0.0"),
    "Date": ("date", "date.today()") ,
    "Time": ("time", "datetime.now().time()") ,
    "DateTime": ("datetime", "datetime.now()"),
    "Boolean": ("bool", "False"),
    "map": ("dict", "{}"),
    "Text": ("str", "''"),
    "Enum": ("str", "''")
}

imports = """
from typing import List, Union
from datetime import datetime, date, time
from gstorm.GraphQLType import GraphQLType
from dataclasses import dataclass, field
from gstorm.helpers.typing_helpers import convert_to, list_convert_to, gql_repr, gql_list_repr
import attr
"""

example = {'Author': {'fields': [{'has_one': False,
                        'name': 'name',
                        'type': {'kind': 'SCALAR', 'name': 'String'},
                        'unique': True},
                       {'has_one': False,
                        'name': 'lastName',
                        'type': {'kind': 'SCALAR', 'name': 'String'},
                        'unique': True},
                       {'has_one': False,
                        'name': 'finishTurn',
                        'type': {'kind': 'SCALAR', 'name': 'Time'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'dateOfBirth',
                        'type': {'kind': 'SCALAR', 'name': 'Date'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'active',
                        'type': {'kind': 'SCALAR', 'name': 'Boolean'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'blogPosts',
                        'type': {'kind': 'LIST', 'name': 'BlogPost'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'comments',
                        'type': {'kind': 'LIST', 'name': 'Comment'},
                        'unique': False},
                       {'has_one': True,
                        'name': 'avatar',
                        'type': {'kind': 'OBJECT', 'name': 'Avatar'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'categories',
                        'type': {'kind': 'LIST', 'name': 'Category'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'session',
                        'type': {'kind': 'SCALAR', 'name': 'Float'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'email',
                        'type': {'kind': 'SCALAR', 'name': 'String'},
                        'unique': False}],
            'kind': 'TYPE',
            'name': 'Author'},
 'Avatar': {'fields': [{'has_one': False,
                        'name': 'imageUrl',
                        'type': {'kind': 'SCALAR', 'name': 'String'},
                        'unique': True},
                       {'has_one': False,
                        'name': 'avatarConfigurations',
                        'type': {'kind': 'LIST', 'name': 'AvatarConfiguration'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'comments',
                        'type': {'kind': 'LIST', 'name': 'Comment'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'owner',
                        'type': {'kind': 'OBJECT', 'name': 'Author'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'blogPost',
                        'type': {'kind': 'OBJECT', 'name': 'BlogPost'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'providers',
                        'type': {'kind': 'LIST', 'name': 'Reply'},
                        'unique': False},
                       {'has_one': False,
                        'name': 'consumers',
                        'type': {'kind': 'LIST', 'name': 'Reply'},
                        'unique': False}],
            'kind': 'TYPE',
            'name': 'Avatar'},
 'AvatarConfiguration': {'fields': [{'has_one': False,
                                     'name': 'guid',
                                     'type': {'kind': 'SCALAR',
                                              'name': 'String'},
                                     'unique': True},
                                    {'has_one': False,
                                     'name': 'config',
                                     'type': {'kind': 'OBJECT',
                                              'name': 'Avatar'},
                                     'unique': False},
                                    {'has_one': False,
                                     'name': 'version',
                                     'type': {'kind': 'SCALAR',
                                              'name': 'String'},
                                     'unique': False}],
                         'kind': 'TYPE',
                         'name': 'AvatarConfiguration'},
 'BlogPost': {'fields': [{'has_one': False,
                          'name': 'author',
                          'type': {'kind': 'OBJECT', 'name': 'Author'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'name',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': True},
                         {'has_one': False,
                          'name': 'body',
                          'type': {'kind': 'SCALAR', 'name': 'Text'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'title',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'lastName',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'dateOfPublication',
                          'type': {'kind': 'SCALAR', 'name': 'Date'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'statusWord',
                          'type': {'kind': 'ENUM', 'name': 'StatusWord'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'comments',
                          'type': {'kind': 'LIST', 'name': 'Comment'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'approvedAt',
                          'type': {'kind': 'SCALAR', 'name': 'DateTime'},
                          'unique': False},
                         {'has_one': True,
                          'name': 'alias',
                          'type': {'kind': 'OBJECT', 'name': 'Avatar'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'tag',
                          'type': {'kind': 'ENUM', 'name': 'Tag'},
                          'unique': False},
                         {'has_one': True,
                          'name': 'wordCount',
                          'type': {'kind': 'OBJECT', 'name': 'WordCount'},
                          'unique': False}],
              'kind': 'TYPE',
              'name': 'BlogPost'},
 'Category': {'fields': [{'has_one': False,
                          'name': 'name',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': True},
                         {'has_one': False,
                          'name': 'description',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'createdBy',
                          'type': {'kind': 'OBJECT', 'name': 'Author'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'editedBy',
                          'type': {'kind': 'OBJECT', 'name': 'Author'},
                          'unique': False}],
              'kind': 'TYPE',
              'name': 'Category'},
 'Comment': {'fields': [{'has_one': False,
                         'name': 'author',
                         'type': {'kind': 'OBJECT', 'name': 'Author'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'supremeAuthor',
                         'type': {'kind': 'OBJECT', 'name': 'Author'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'blogPost',
                         'type': {'kind': 'OBJECT', 'name': 'BlogPost'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'body',
                         'type': {'kind': 'SCALAR', 'name': 'String'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'recievedAt',
                         'type': {'kind': 'SCALAR', 'name': 'DateTime'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'reportedAt',
                         'type': {'kind': 'SCALAR', 'name': 'DateTime'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'avatar',
                         'type': {'kind': 'OBJECT', 'name': 'Avatar'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'styles',
                         'type': {'kind': 'LIST', 'name': 'Style'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'finishedAt',
                         'type': {'kind': 'SCALAR', 'name': 'Int'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'type',
                         'type': {'kind': 'SCALAR', 'name': 'Int'},
                         'unique': False},
                        {'has_one': False,
                         'name': 'tag',
                         'type': {'kind': 'ENUM', 'name': 'Tag'},
                         'unique': False}],
             'kind': 'TYPE',
             'name': 'Comment'},
 'Employee': {'fields': [{'has_one': False,
                          'name': 'name',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'email',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': True},
                         {'has_one': False,
                          'name': 'department',
                          'type': {'kind': 'SCALAR', 'name': 'String'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'employer',
                          'type': {'kind': 'OBJECT', 'name': 'Employee'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'employees',
                          'type': {'kind': 'LIST', 'name': 'Employee'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'boss',
                          'type': {'kind': 'OBJECT', 'name': 'Employee'},
                          'unique': False},
                         {'has_one': False,
                          'name': 'workers',
                          'type': {'kind': 'LIST', 'name': 'Employee'},
                          'unique': False}],
              'kind': 'TYPE',
              'name': 'Employee'},
 'Equipment': {'fields': [{'has_one': False,
                           'name': 'name',
                           'type': {'kind': 'SCALAR', 'name': 'String'},
                           'unique': True},
                          {'has_one': False,
                           'name': 'description',
                           'type': {'kind': 'SCALAR', 'name': 'Text'},
                           'unique': False},
                          {'has_one': False,
                           'name': 'information',
                           'type': {'kind': 'SCALAR', 'name': 'map'},
                           'unique': False}],
               'kind': 'TYPE',
               'name': 'Equipment'},
 'OrderComment': {'fields': [{'has_one': False,
                              'name': 'description',
                              'type': {'kind': 'SCALAR', 'name': 'Text'},
                              'unique': False}],
                  'kind': 'TYPE',
                  'name': 'OrderComment'},
 'Reply': {'fields': [{'has_one': False,
                       'name': 'title',
                       'type': {'kind': 'SCALAR', 'name': 'String'},
                       'unique': True},
                      {'has_one': False,
                       'name': 'provider',
                       'type': {'kind': 'OBJECT', 'name': 'Avatar'},
                       'unique': False},
                      {'has_one': False,
                       'name': 'consumer',
                       'type': {'kind': 'OBJECT', 'name': 'Avatar'},
                       'unique': False},
                      {'has_one': False,
                       'name': 'struct',
                       'type': {'kind': 'SCALAR', 'name': 'map'},
                       'unique': False}],
           'kind': 'TYPE',
           'name': 'Reply'},
 'StatusWord': {'enumValues': ['APPROVED', 'PENDING', 'REJECTED'],
                'kind': 'ENUM',
                'name': 'StatusWord'},
 'Style': {'fields': [{'has_one': False,
                       'name': 'description',
                       'type': {'kind': 'SCALAR', 'name': 'Text'},
                       'unique': False},
                      {'has_one': False,
                       'name': 'comment',
                       'type': {'kind': 'OBJECT', 'name': 'Comment'},
                       'unique': False}],
           'kind': 'TYPE',
           'name': 'Style'},
 'Tag': {'enumValues': ['QUESTION', 'DEPENDENCY', 'NEWS'],
         'kind': 'ENUM',
         'name': 'Tag'},
 'WordCount': {'fields': [{'has_one': False,
                           'name': 'outputBlogPost',
                           'type': {'kind': 'OBJECT', 'name': 'BlogPost'},
                           'unique': False},
                          {'has_one': False,
                           'name': 'count',
                           'type': {'kind': 'SCALAR', 'name': 'Int'},
                           'unique': False}],
               'kind': 'TYPE',
               'name': 'WordCount'}}
