# sqlc is used to generate types from sql schema language.
# It was chosen to ensure type-safety when interacting with
# the database.
version: "2"
# Ideally renames & overrides would go under the sql section, but there is a
# bug in sqlc that only global renames & overrides are currently being applied.
overrides:
  go:
    overrides:
      - column: "provisioner_daemons.tags"
        go_type: "github.com/coder/coder/coderd/database/dbtype.StringMap"
      - column: "provisioner_jobs.tags"
        go_type: "github.com/coder/coder/coderd/database/dbtype.StringMap"
      - column: "users.rbac_roles"
        go_type: "github.com/lib/pq.StringArray"
      - column: "templates.user_acl"
        go_type:
          type: "TemplateACL"
      - column: "templates.group_acl"
        go_type:
          type: "TemplateACL"
    rename:
      api_key: APIKey
      api_key_scope: APIKeyScope
      api_key_scope_all: APIKeyScopeAll
      api_key_scope_application_connect: APIKeyScopeApplicationConnect
      avatar_url: AvatarURL
      session_count_vscode: SessionCountVSCode
      session_count_jetbrains: SessionCountJetBrains
      session_count_reconnecting_pty: SessionCountReconnectingPTY
      session_count_ssh: SessionCountSSH
      connection_median_latency_ms: ConnectionMedianLatencyMS
      login_type_oidc: LoginTypeOIDC
      oauth_access_token: OAuthAccessToken
      oauth_expiry: OAuthExpiry
      oauth_id_token: OAuthIDToken
      oauth_refresh_token: OAuthRefreshToken
      parameter_type_system_hcl: ParameterTypeSystemHCL
      userstatus: UserStatus
      gitsshkey: GitSSHKey
      rbac_roles: RBACRoles
      ip_address: IPAddress
      ip_addresses: IPAddresses
      ids: IDs
      jwt: JWT
      user_acl: UserACL
      group_acl: GroupACL
      troubleshooting_url: TroubleshootingURL
      default_ttl: DefaultTTL
      max_ttl: MaxTTL
      template_max_ttl: TemplateMaxTTL
      motd_file: MOTDFile
      uuid: UUID
      failure_ttl: FailureTTL
      inactivity_ttl: InactivityTTL

sql:
  - schema: "./dump.sql"
    queries: "./queries"
    engine: "postgresql"
    gen:
      go:
        package: "database"
        out: "./queries"
        emit_interface: true
        emit_json_tags: true
        emit_db_tags: true
        emit_enum_valid_method: true
        emit_all_enum_values: true
