# sqlc is used to generate types from sql schema language. # It was chosen to ensure type-safety when interacting with # the database. version: "2" cloud: # This is the static ID for the coder project. project: "01HEP08N3WKWRFZT3ZZ9Q37J8X" sql: - schema: "./dump.sql" queries: "./queries" engine: "postgresql" # This only works if you are running a local postgres database with the # schema loaded and migrations run. Run `make sqlc-vet` to run the linter. database: uri: "${SQLC_DATABASE_URL}" analyzer: database: false rules: - sqlc/db-prepare - do-not-use-public-schema-in-queries 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 overrides: - column: "provisioner_daemons.tags" go_type: type: "StringMap" - column: "provisioner_jobs.tags" go_type: type: "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" - column: "template_with_users.user_acl" go_type: type: "TemplateACL" - column: "template_with_users.group_acl" go_type: type: "TemplateACL" - column: "template_usage_stats.app_usage_mins" go_type: type: "StringMapOfInt" rename: template: TemplateTable template_with_user: Template workspace_build: WorkspaceBuildTable workspace_build_with_user: WorkspaceBuild template_version: TemplateVersionTable template_version_with_user: TemplateVersion api_key: APIKey api_key_scope: APIKeyScope api_key_scope_all: APIKeyScopeAll api_key_scope_application_connect: APIKeyScopeApplicationConnect api_version: APIVersion avatar_url: AvatarURL created_by_avatar_url: CreatedByAvatarURL dbcrypt_key: DBCryptKey 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_access_token_key_id: OAuthAccessTokenKeyID oauth_expiry: OAuthExpiry oauth_id_token: OAuthIDToken oauth_refresh_token: OAuthRefreshToken oauth_refresh_token_key_id: OAuthRefreshTokenKeyID oauth_extra: OAuthExtra 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 motd_file: MOTDFile uuid: UUID failure_ttl: FailureTTL time_til_dormant_autodelete: TimeTilDormantAutoDelete eof: EOF template_ids: TemplateIDs active_user_ids: ActiveUserIDs display_app_ssh_helper: DisplayAppSSHHelper oauth2_provider_app: OAuth2ProviderApp oauth2_provider_app_secret: OAuth2ProviderAppSecret oauth2_provider_app_code: OAuth2ProviderAppCode oauth2_provider_app_token: OAuth2ProviderAppToken api_key_id: APIKeyID callback_url: CallbackURL login_type_oauth2_provider_app: LoginTypeOAuth2ProviderApp rules: - name: do-not-use-public-schema-in-queries message: "do not use public schema in queries" # FIXME: It would be great to run sqlc-vet against `migrations` directory and `dump.sql`. rule: > query.sql.matches(r'[^a-z]public\.')