hunk.code_window: {
     "name": "firebase2graphql",
     "description": "A CLI tool to get GraphQL over Firebase data dump",
     "version": "0.0.1-alpha7",
     "author": "Hasura",
     "bin": {
       "firebase2graphql": "./bin/run",
       "f2g": "./bin/run"
  
hunk.labels: keep keep keep replace keep keep keep keep
hunk.after_edit:   "version": "0.0.1-alpha8",
  
hunk.file_path: community/tools/firebase2graphql/package.json
hunk.type: replace
file: type: bulk
  args:
  
  #Author table
  - type: run_sql
    args:
      sql: |
        create table author(
            id serial primary key, 
            name text unique,
            is_registered boolean not null default false
        );
  - type: track_table
    args:
      schema: public
      name: author
  
  #Article table
  - type: run_sql
    args:
      sql: |
        CREATE TABLE article (
          id SERIAL PRIMARY KEY,
          title TEXT,
          content TEXT,
          author_id INTEGER REFERENCES author(id),
          is_published BOOLEAN,
          published_on TIMESTAMP
        )
  - type: track_table
    args:
      schema: public
      name: article
  
  
  #Article table
  - type: run_sql
    args:
      sql: |
        CREATE TABLE city (
          id SERIAL PRIMARY KEY,
          name TEXT NOT NULL,
          country TEXT NOT NULL
        )
  - type: track_table
    args:
      schema: public
      name: city
  
  #Set timezone
  - type: run_sql
    args:
      sql: |
        SET TIME ZONE 'UTC';
  
  #Article order
  - type: run_sql
    args:
      sql: |
        CREATE TABLE orders (
          id SERIAL PRIMARY KEY,
          received_at TIMESTAMP WITH TIME ZONE NOT NULL,
          delivered_at TIMESTAMP WITH TIME ZONE
        )
  - type: track_table
    args:
      schema: public
      name: orders
  
  #Object relationship
  - type: create_object_relationship
    args:
      table: article
      name: author
      using:
        foreign_key_constraint_on: author_id
  
  #Array relationship
  - type: create_array_relationship
    args:
      table: author
      name: articles
      using:
        foreign_key_constraint_on:
          table: article
          column: author_id
  
  
  #Insert Authors
  - type: insert
    args:
      table: author
      objects:
      - name: Author 1
        is_registered: true
      - name: Author 2
        is_registered: true
      - name: Author 3
        is_registered: false
  
  
  - type: run_sql
    args:
      sql: |
        insert into article (title,content,author_id,is_published)
        values
        (
          'Article 1',
          'Sample article content 1',
          1,
          false
        ),
        (
          'Article 2',
          'Sample article content 2',
          1,
          true
        ),
        (
          'Article 3',
          'Sample article content 3',
          2,
          false
        ),
        (
          'Article 4',
          'Sample article content 4',
          3,
          true
        )
  
  - type: insert
    args:
      table: city
      objects:
      - name: Durham
        country: USA 
      - name:  New York
        country: USA
      - name: Framlingham
        country: UK
      - name: New Orleans 
        country: USA
  
  - type: insert
    args:
      table: orders
      objects:
        - received_at: '2018-09-21T09:39:44Z'
        - received_at: '2018-09-21T09:40:44Z'
          delivered_at: '2018-09-21T09:50:44Z'
  