Files
Charon/.github/instructions/sql-sp-generation.instructions.md
akanealw eec8c28fb3
Some checks are pending
Go Benchmark / Performance Regression Check (push) Waiting to run
Cerberus Integration / Cerberus Security Stack Integration (push) Waiting to run
Upload Coverage to Codecov / Backend Codecov Upload (push) Waiting to run
Upload Coverage to Codecov / Frontend Codecov Upload (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (go) (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (javascript-typescript) (push) Waiting to run
CrowdSec Integration / CrowdSec Bouncer Integration (push) Waiting to run
Docker Build, Publish & Test / build-and-push (push) Waiting to run
Docker Build, Publish & Test / Security Scan PR Image (push) Blocked by required conditions
Quality Checks / Auth Route Protection Contract (push) Waiting to run
Quality Checks / Codecov Trigger/Comment Parity Guard (push) Waiting to run
Quality Checks / Backend (Go) (push) Waiting to run
Quality Checks / Frontend (React) (push) Waiting to run
Rate Limit integration / Rate Limiting Integration (push) Waiting to run
Security Scan (PR) / Trivy Binary Scan (push) Waiting to run
Supply Chain Verification (PR) / Verify Supply Chain (push) Waiting to run
WAF integration / Coraza WAF Integration (push) Waiting to run
changed perms
2026-04-22 18:19:14 +00:00

3.1 KiB
Executable File

description, applyTo
description applyTo
Guidelines for generating SQL statements and stored procedures **/*.sql

SQL Development

Database schema generation

  • all table names should be in singular form
  • all column names should be in singular form
  • all tables should have a primary key column named id
  • all tables should have a column named created_at to store the creation timestamp
  • all tables should have a column named updated_at to store the last update timestamp

Database schema design

  • all tables should have a primary key constraint
  • all foreign key constraints should have a name
  • all foreign key constraints should be defined inline
  • all foreign key constraints should have ON DELETE CASCADE option
  • all foreign key constraints should have ON UPDATE CASCADE option
  • all foreign key constraints should reference the primary key of the parent table

SQL Coding Style

  • use uppercase for SQL keywords (SELECT, FROM, WHERE)
  • use consistent indentation for nested queries and conditions
  • include comments to explain complex logic
  • break long queries into multiple lines for readability
  • organize clauses consistently (SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY)

SQL Query Structure

  • use explicit column names in SELECT statements instead of SELECT *
  • qualify column names with table name or alias when using multiple tables
  • limit the use of subqueries when joins can be used instead
  • include LIMIT/TOP clauses to restrict result sets
  • use appropriate indexing for frequently queried columns
  • avoid using functions on indexed columns in WHERE clauses

Stored Procedure Naming Conventions

  • prefix stored procedure names with 'usp_'
  • use PascalCase for stored procedure names
  • use descriptive names that indicate purpose (e.g., usp_GetCustomerOrders)
  • include plural noun when returning multiple records (e.g., usp_GetProducts)
  • include singular noun when returning single record (e.g., usp_GetProduct)

Parameter Handling

  • prefix parameters with '@'
  • use camelCase for parameter names
  • provide default values for optional parameters
  • validate parameter values before use
  • document parameters with comments
  • arrange parameters consistently (required first, optional later)

Stored Procedure Structure

  • include header comment block with description, parameters, and return values
  • return standardized error codes/messages
  • return result sets with consistent column order
  • use OUTPUT parameters for returning status information
  • prefix temporary tables with 'tmp_'

SQL Security Best Practices

  • parameterize all queries to prevent SQL injection
  • use prepared statements when executing dynamic SQL
  • avoid embedding credentials in SQL scripts
  • implement proper error handling without exposing system details
  • avoid using dynamic SQL within stored procedures

Transaction Management

  • explicitly begin and commit transactions
  • use appropriate isolation levels based on requirements
  • avoid long-running transactions that lock tables
  • use batch processing for large data operations
  • include SET NOCOUNT ON for stored procedures that modify data