version: 2
sql:
  - engine: "sqlite"
    schema: "./database/schema.sql"
    queries: "./database/query.sql"
    gen:
      go:
        package: "database"
        out: "database"
        emit_json_tags: true
        emit_pointers_for_null_types: true
        overrides:
          # Documents
          - column: "documents.md5"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.filepath"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.basepath"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.coverfile"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.title"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.author"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.series"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.series_index"
            go_type:
              type: "int64"
              pointer: true
          - column: "documents.lang"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.description"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.words"
            go_type:
              type: "int64"
              pointer: true
          - column: "documents.olid"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.gbid"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.isbn10"
            go_type:
              type: "string"
              pointer: true
          - column: "documents.isbn13"
            go_type:
              type: "string"
              pointer: true

          # Metadata
          - column: "metadata.title"
            go_type:
              type: "string"
              pointer: true
          - column: "metadata.author"
            go_type:
              type: "string"
              pointer: true
          - column: "metadata.description"
            go_type:
              type: "string"
              pointer: true
          - column: "metadata.gbid"
            go_type:
              type: "string"
              pointer: true
          - column: "metadata.olid"
            go_type:
              type: "string"
              pointer: true
          - column: "metadata.isbn10"
            go_type:
              type: "string"
              pointer: true
          - column: "metadata.isbn13"
            go_type:
              type: "string"
              pointer: true

          # Devices
          - column: "devices.id"
            go_type:
              type: "string"
          - column: "devices.user_id"
            go_type:
              type: "string"
          - column: "devices.device_name"
            go_type:
              type: "string"
          - column: "devices.sync"
            go_type:
              type: "bool"
          - column: "devices.created_at"
            go_type:
              type: "string"

          # Devices
          - column: "users.pass"
            go_type:
              type: "string"
              pointer: true
          - column: "users.timezone"
            go_type:
              type: "string"
              pointer: true
          - column: "users.auth_hash"
            go_type:
              type: "string"
              pointer: true

          # Override Time
          - db_type: "DATETIME"
            go_type:
              type: "string"

          # Do not generate JSON
          - column: "documents.synced"
            go_struct_tag: 'json:"-"'
          - column: "documents.olid"
            go_struct_tag: 'json:"-"'
          - column: "documents.deleted"
            go_struct_tag: 'json:"-"'
          - column: "users.pass"
            go_struct_tag: 'json:"-"'
          - column: "users.admin"
            go_struct_tag: 'json:"-"'
