@mytechtoday/augment-extensions 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
- package/augment-extensions/workflows/beads-integration/README.md +143 -0
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
- package/augment-extensions/workflows/beads-integration/module.json +75 -0
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/writing-standards/screenplay/README.md +300 -0
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +168 -10
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts +19 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +478 -63
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/types/gui.d.ts +62 -0
- package/cli/dist/types/gui.d.ts.map +1 -0
- package/cli/dist/types/gui.js +30 -0
- package/cli/dist/types/gui.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/gui-helpers.d.ts +23 -0
- package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
- package/cli/dist/utils/gui-helpers.js +159 -0
- package/cli/dist/utils/gui-helpers.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +232 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +900 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +559 -105
- package/package.json +17 -6
|
@@ -0,0 +1,697 @@
|
|
|
1
|
+
# Relational Databases
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document covers relational database fundamentals, SQL standards, database-specific features, ACID compliance, transaction management, connection handling, and when to use relational databases.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## When to Use Relational Databases
|
|
10
|
+
|
|
11
|
+
### Ideal Use Cases
|
|
12
|
+
|
|
13
|
+
**Use relational databases when:**
|
|
14
|
+
- ✅ Data has clear relationships and structure
|
|
15
|
+
- ✅ ACID compliance is required
|
|
16
|
+
- ✅ Complex queries with JOINs are needed
|
|
17
|
+
- ✅ Data integrity is critical
|
|
18
|
+
- ✅ Transactions are essential
|
|
19
|
+
- ✅ Reporting and analytics are important
|
|
20
|
+
- ✅ Schema is relatively stable
|
|
21
|
+
|
|
22
|
+
**Examples:**
|
|
23
|
+
- Financial systems (banking, accounting)
|
|
24
|
+
- E-commerce platforms (orders, inventory)
|
|
25
|
+
- CRM systems (customers, contacts)
|
|
26
|
+
- ERP systems (resources, planning)
|
|
27
|
+
- Content management systems
|
|
28
|
+
|
|
29
|
+
### When to Consider Alternatives
|
|
30
|
+
|
|
31
|
+
**Consider NoSQL when:**
|
|
32
|
+
- ❌ Schema changes frequently
|
|
33
|
+
- ❌ Horizontal scaling is critical
|
|
34
|
+
- ❌ Data is unstructured or semi-structured
|
|
35
|
+
- ❌ Eventual consistency is acceptable
|
|
36
|
+
- ❌ Simple key-value lookups dominate
|
|
37
|
+
- ❌ Document-oriented data model fits better
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## ACID Compliance
|
|
42
|
+
|
|
43
|
+
### ACID Properties
|
|
44
|
+
|
|
45
|
+
#### Atomicity
|
|
46
|
+
|
|
47
|
+
**Definition**: All operations in a transaction succeed or all fail
|
|
48
|
+
|
|
49
|
+
```sql
|
|
50
|
+
-- Example: Transfer money between accounts
|
|
51
|
+
BEGIN TRANSACTION;
|
|
52
|
+
|
|
53
|
+
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
|
|
54
|
+
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
|
|
55
|
+
|
|
56
|
+
-- If either UPDATE fails, both are rolled back
|
|
57
|
+
COMMIT;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### Consistency
|
|
61
|
+
|
|
62
|
+
**Definition**: Database remains in valid state before and after transaction
|
|
63
|
+
|
|
64
|
+
```sql
|
|
65
|
+
-- Example: Constraint ensures consistency
|
|
66
|
+
ALTER TABLE accounts ADD CONSTRAINT check_balance CHECK (balance >= 0);
|
|
67
|
+
|
|
68
|
+
-- This transaction will fail if it violates the constraint
|
|
69
|
+
BEGIN TRANSACTION;
|
|
70
|
+
UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
|
|
71
|
+
COMMIT; -- Fails if balance would go negative
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Isolation
|
|
75
|
+
|
|
76
|
+
**Definition**: Concurrent transactions don't interfere with each other
|
|
77
|
+
|
|
78
|
+
**Isolation Levels** (see `relational-transactions.md` for details):
|
|
79
|
+
- Read Uncommitted
|
|
80
|
+
- Read Committed (default in most databases)
|
|
81
|
+
- Repeatable Read
|
|
82
|
+
- Serializable
|
|
83
|
+
|
|
84
|
+
#### Durability
|
|
85
|
+
|
|
86
|
+
**Definition**: Committed transactions persist even after system failure
|
|
87
|
+
|
|
88
|
+
**Implementation:**
|
|
89
|
+
- Write-ahead logging (WAL)
|
|
90
|
+
- Transaction logs
|
|
91
|
+
- Checkpoints
|
|
92
|
+
- Replication
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## SQL Standards
|
|
97
|
+
|
|
98
|
+
### ANSI SQL Standards
|
|
99
|
+
|
|
100
|
+
**Major versions:**
|
|
101
|
+
- SQL-86 (SQL-87): First standard
|
|
102
|
+
- SQL-92: Widely adopted baseline
|
|
103
|
+
- SQL:1999: Added triggers, recursive queries
|
|
104
|
+
- SQL:2003: Added window functions, XML
|
|
105
|
+
- SQL:2011: Added temporal data
|
|
106
|
+
- SQL:2016: Added JSON support
|
|
107
|
+
|
|
108
|
+
### Standard SQL Data Types
|
|
109
|
+
|
|
110
|
+
```sql
|
|
111
|
+
-- Numeric types
|
|
112
|
+
INTEGER, SMALLINT, BIGINT
|
|
113
|
+
DECIMAL(precision, scale), NUMERIC(precision, scale)
|
|
114
|
+
REAL, DOUBLE PRECISION
|
|
115
|
+
|
|
116
|
+
-- Character types
|
|
117
|
+
CHAR(n), VARCHAR(n)
|
|
118
|
+
TEXT
|
|
119
|
+
|
|
120
|
+
-- Date/time types
|
|
121
|
+
DATE, TIME, TIMESTAMP
|
|
122
|
+
INTERVAL
|
|
123
|
+
|
|
124
|
+
-- Boolean
|
|
125
|
+
BOOLEAN
|
|
126
|
+
|
|
127
|
+
-- Binary
|
|
128
|
+
BLOB, BYTEA
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Standard SQL Syntax
|
|
132
|
+
|
|
133
|
+
```sql
|
|
134
|
+
-- SELECT statement
|
|
135
|
+
SELECT column1, column2
|
|
136
|
+
FROM table1
|
|
137
|
+
JOIN table2 ON table1.id = table2.foreign_id
|
|
138
|
+
WHERE condition
|
|
139
|
+
GROUP BY column1
|
|
140
|
+
HAVING aggregate_condition
|
|
141
|
+
ORDER BY column1 DESC
|
|
142
|
+
LIMIT 10 OFFSET 20;
|
|
143
|
+
|
|
144
|
+
-- INSERT statement
|
|
145
|
+
INSERT INTO table_name (column1, column2)
|
|
146
|
+
VALUES (value1, value2);
|
|
147
|
+
|
|
148
|
+
-- UPDATE statement
|
|
149
|
+
UPDATE table_name
|
|
150
|
+
SET column1 = value1, column2 = value2
|
|
151
|
+
WHERE condition;
|
|
152
|
+
|
|
153
|
+
-- DELETE statement
|
|
154
|
+
DELETE FROM table_name
|
|
155
|
+
WHERE condition;
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Database-Specific Features
|
|
161
|
+
|
|
162
|
+
### PostgreSQL
|
|
163
|
+
|
|
164
|
+
**Strengths:**
|
|
165
|
+
- Advanced data types (JSON, JSONB, arrays, hstore)
|
|
166
|
+
- Full-text search
|
|
167
|
+
- Geospatial data (PostGIS)
|
|
168
|
+
- Advanced indexing (GiST, GIN, BRIN)
|
|
169
|
+
- Window functions
|
|
170
|
+
- CTEs and recursive queries
|
|
171
|
+
- MVCC (Multi-Version Concurrency Control)
|
|
172
|
+
- Extensibility (custom functions, types, operators)
|
|
173
|
+
|
|
174
|
+
**Example: JSONB**
|
|
175
|
+
```sql
|
|
176
|
+
-- PostgreSQL: Store and query JSON data
|
|
177
|
+
CREATE TABLE products (
|
|
178
|
+
id SERIAL PRIMARY KEY,
|
|
179
|
+
name VARCHAR(255),
|
|
180
|
+
attributes JSONB
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
INSERT INTO products (name, attributes)
|
|
184
|
+
VALUES ('Laptop', '{"brand": "Dell", "ram": "16GB", "storage": "512GB SSD"}');
|
|
185
|
+
|
|
186
|
+
-- Query JSON fields
|
|
187
|
+
SELECT * FROM products
|
|
188
|
+
WHERE attributes->>'brand' = 'Dell';
|
|
189
|
+
|
|
190
|
+
-- Index JSON fields
|
|
191
|
+
CREATE INDEX idx_products_brand ON products USING GIN ((attributes->'brand'));
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Example: Arrays**
|
|
195
|
+
```sql
|
|
196
|
+
-- PostgreSQL: Array data type
|
|
197
|
+
CREATE TABLE posts (
|
|
198
|
+
id SERIAL PRIMARY KEY,
|
|
199
|
+
title VARCHAR(255),
|
|
200
|
+
tags TEXT[]
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
INSERT INTO posts (title, tags)
|
|
204
|
+
VALUES ('Database Guide', ARRAY['database', 'sql', 'postgresql']);
|
|
205
|
+
|
|
206
|
+
-- Query arrays
|
|
207
|
+
SELECT * FROM posts WHERE 'postgresql' = ANY(tags);
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Example: Full-Text Search**
|
|
211
|
+
```sql
|
|
212
|
+
-- PostgreSQL: Full-text search
|
|
213
|
+
CREATE TABLE articles (
|
|
214
|
+
id SERIAL PRIMARY KEY,
|
|
215
|
+
title TEXT,
|
|
216
|
+
content TEXT,
|
|
217
|
+
search_vector tsvector
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
-- Create GIN index for full-text search
|
|
221
|
+
CREATE INDEX idx_articles_search ON articles USING GIN(search_vector);
|
|
222
|
+
|
|
223
|
+
-- Update search vector
|
|
224
|
+
UPDATE articles
|
|
225
|
+
SET search_vector = to_tsvector('english', title || ' ' || content);
|
|
226
|
+
|
|
227
|
+
-- Search
|
|
228
|
+
SELECT * FROM articles
|
|
229
|
+
WHERE search_vector @@ to_tsquery('english', 'database & optimization');
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### MySQL
|
|
233
|
+
|
|
234
|
+
**Strengths:**
|
|
235
|
+
- High performance for read-heavy workloads
|
|
236
|
+
- Replication (master-slave, master-master)
|
|
237
|
+
- Storage engines (InnoDB, MyISAM)
|
|
238
|
+
- Partitioning
|
|
239
|
+
- Full-text search
|
|
240
|
+
- JSON support (MySQL 5.7+)
|
|
241
|
+
|
|
242
|
+
**Example: Storage Engines**
|
|
243
|
+
```sql
|
|
244
|
+
-- MySQL: InnoDB (default, supports transactions)
|
|
245
|
+
CREATE TABLE orders (
|
|
246
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
247
|
+
user_id INT NOT NULL,
|
|
248
|
+
total DECIMAL(10, 2),
|
|
249
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
250
|
+
) ENGINE=InnoDB;
|
|
251
|
+
|
|
252
|
+
-- MySQL: MyISAM (faster reads, no transactions)
|
|
253
|
+
CREATE TABLE logs (
|
|
254
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
255
|
+
message TEXT,
|
|
256
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
257
|
+
) ENGINE=MyISAM;
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Example: JSON**
|
|
261
|
+
```sql
|
|
262
|
+
-- MySQL: JSON data type
|
|
263
|
+
CREATE TABLE users (
|
|
264
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
265
|
+
name VARCHAR(255),
|
|
266
|
+
preferences JSON
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
INSERT INTO users (name, preferences)
|
|
270
|
+
VALUES ('John', '{"theme": "dark", "language": "en"}');
|
|
271
|
+
|
|
272
|
+
-- Query JSON
|
|
273
|
+
SELECT * FROM users
|
|
274
|
+
WHERE JSON_EXTRACT(preferences, '$.theme') = 'dark';
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### SQL Server
|
|
278
|
+
|
|
279
|
+
**Strengths:**
|
|
280
|
+
- Integration with Microsoft ecosystem
|
|
281
|
+
- Advanced analytics (SQL Server Analysis Services)
|
|
282
|
+
- Reporting (SQL Server Reporting Services)
|
|
283
|
+
- Integration Services (ETL)
|
|
284
|
+
- Columnstore indexes
|
|
285
|
+
- In-memory OLTP
|
|
286
|
+
- Temporal tables
|
|
287
|
+
|
|
288
|
+
**Example: Temporal Tables**
|
|
289
|
+
```sql
|
|
290
|
+
-- SQL Server: System-versioned temporal table
|
|
291
|
+
CREATE TABLE employees (
|
|
292
|
+
id INT PRIMARY KEY,
|
|
293
|
+
name NVARCHAR(255),
|
|
294
|
+
salary DECIMAL(10, 2),
|
|
295
|
+
valid_from DATETIME2 GENERATED ALWAYS AS ROW START,
|
|
296
|
+
valid_to DATETIME2 GENERATED ALWAYS AS ROW END,
|
|
297
|
+
PERIOD FOR SYSTEM_TIME (valid_from, valid_to)
|
|
298
|
+
) WITH (SYSTEM_VERSIONING = ON);
|
|
299
|
+
|
|
300
|
+
-- Query historical data
|
|
301
|
+
SELECT * FROM employees
|
|
302
|
+
FOR SYSTEM_TIME AS OF '2024-01-01';
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### SQLite
|
|
306
|
+
|
|
307
|
+
**Strengths:**
|
|
308
|
+
- Embedded database (no server)
|
|
309
|
+
- Zero configuration
|
|
310
|
+
- Single file database
|
|
311
|
+
- Cross-platform
|
|
312
|
+
- ACID compliant
|
|
313
|
+
- Small footprint
|
|
314
|
+
|
|
315
|
+
**Use cases:**
|
|
316
|
+
- Mobile applications
|
|
317
|
+
- Desktop applications
|
|
318
|
+
- Embedded systems
|
|
319
|
+
- Testing and development
|
|
320
|
+
- Small to medium websites
|
|
321
|
+
|
|
322
|
+
**Example:**
|
|
323
|
+
```sql
|
|
324
|
+
-- SQLite: Create database (single file)
|
|
325
|
+
-- No server setup required
|
|
326
|
+
|
|
327
|
+
CREATE TABLE settings (
|
|
328
|
+
key TEXT PRIMARY KEY,
|
|
329
|
+
value TEXT
|
|
330
|
+
);
|
|
331
|
+
|
|
332
|
+
INSERT INTO settings (key, value)
|
|
333
|
+
VALUES ('theme', 'dark');
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Transaction Isolation Levels
|
|
339
|
+
|
|
340
|
+
### Overview
|
|
341
|
+
|
|
342
|
+
**Isolation levels** control how transactions interact with each other.
|
|
343
|
+
|
|
344
|
+
| Level | Dirty Read | Non-Repeatable Read | Phantom Read |
|
|
345
|
+
|-------|-----------|---------------------|--------------|
|
|
346
|
+
| Read Uncommitted | Yes | Yes | Yes |
|
|
347
|
+
| Read Committed | No | Yes | Yes |
|
|
348
|
+
| Repeatable Read | No | No | Yes |
|
|
349
|
+
| Serializable | No | No | No |
|
|
350
|
+
|
|
351
|
+
### Setting Isolation Level
|
|
352
|
+
|
|
353
|
+
```sql
|
|
354
|
+
-- PostgreSQL
|
|
355
|
+
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
356
|
+
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
357
|
+
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
358
|
+
|
|
359
|
+
-- MySQL
|
|
360
|
+
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
361
|
+
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
362
|
+
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
363
|
+
|
|
364
|
+
-- SQL Server
|
|
365
|
+
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
366
|
+
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
367
|
+
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
**See `relational-transactions.md` for detailed transaction management.**
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Connection Management
|
|
375
|
+
|
|
376
|
+
### Connection Pooling
|
|
377
|
+
|
|
378
|
+
**Why use connection pooling:**
|
|
379
|
+
- ✅ Reduces connection overhead
|
|
380
|
+
- ✅ Improves performance
|
|
381
|
+
- ✅ Limits concurrent connections
|
|
382
|
+
- ✅ Reuses existing connections
|
|
383
|
+
|
|
384
|
+
**Example: Node.js (pg pool)**
|
|
385
|
+
```javascript
|
|
386
|
+
const { Pool } = require('pg');
|
|
387
|
+
|
|
388
|
+
const pool = new Pool({
|
|
389
|
+
host: 'localhost',
|
|
390
|
+
port: 5432,
|
|
391
|
+
database: 'mydb',
|
|
392
|
+
user: 'myuser',
|
|
393
|
+
password: 'mypassword',
|
|
394
|
+
max: 20, // Maximum pool size
|
|
395
|
+
idleTimeoutMillis: 30000, // Close idle clients after 30s
|
|
396
|
+
connectionTimeoutMillis: 2000 // Return error after 2s if no connection available
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
// Use connection from pool
|
|
400
|
+
async function getUser(id) {
|
|
401
|
+
const client = await pool.connect();
|
|
402
|
+
try {
|
|
403
|
+
const result = await client.query('SELECT * FROM users WHERE id = $1', [id]);
|
|
404
|
+
return result.rows[0];
|
|
405
|
+
} finally {
|
|
406
|
+
client.release(); // Return connection to pool
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
**Example: Python (SQLAlchemy)**
|
|
412
|
+
```python
|
|
413
|
+
from sqlalchemy import create_engine
|
|
414
|
+
from sqlalchemy.pool import QueuePool
|
|
415
|
+
|
|
416
|
+
engine = create_engine(
|
|
417
|
+
'postgresql://user:password@localhost/mydb',
|
|
418
|
+
poolclass=QueuePool,
|
|
419
|
+
pool_size=10, # Number of connections to maintain
|
|
420
|
+
max_overflow=20, # Maximum overflow connections
|
|
421
|
+
pool_timeout=30, # Timeout for getting connection
|
|
422
|
+
pool_recycle=3600 # Recycle connections after 1 hour
|
|
423
|
+
)
|
|
424
|
+
|
|
425
|
+
# Use connection
|
|
426
|
+
with engine.connect() as conn:
|
|
427
|
+
result = conn.execute("SELECT * FROM users WHERE id = %s", (user_id,))
|
|
428
|
+
user = result.fetchone()
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Connection Best Practices
|
|
432
|
+
|
|
433
|
+
**DO:**
|
|
434
|
+
- ✅ Use connection pooling
|
|
435
|
+
- ✅ Set appropriate pool size (typically 10-20)
|
|
436
|
+
- ✅ Set connection timeouts
|
|
437
|
+
- ✅ Close connections when done
|
|
438
|
+
- ✅ Handle connection errors gracefully
|
|
439
|
+
- ✅ Monitor connection pool metrics
|
|
440
|
+
|
|
441
|
+
**DON'T:**
|
|
442
|
+
- ❌ Create new connection for each query
|
|
443
|
+
- ❌ Leave connections open indefinitely
|
|
444
|
+
- ❌ Set pool size too high (wastes resources)
|
|
445
|
+
- ❌ Set pool size too low (causes bottlenecks)
|
|
446
|
+
- ❌ Ignore connection pool exhaustion
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## ORM vs Raw SQL
|
|
451
|
+
|
|
452
|
+
### Object-Relational Mapping (ORM)
|
|
453
|
+
|
|
454
|
+
**Advantages:**
|
|
455
|
+
- ✅ Database abstraction
|
|
456
|
+
- ✅ Type safety
|
|
457
|
+
- ✅ Automatic migrations
|
|
458
|
+
- ✅ Reduced boilerplate
|
|
459
|
+
- ✅ Protection against SQL injection
|
|
460
|
+
|
|
461
|
+
**Disadvantages:**
|
|
462
|
+
- ❌ Performance overhead
|
|
463
|
+
- ❌ Complex queries can be difficult
|
|
464
|
+
- ❌ Learning curve
|
|
465
|
+
- ❌ Less control over SQL
|
|
466
|
+
|
|
467
|
+
**Example: Prisma (TypeScript)**
|
|
468
|
+
```typescript
|
|
469
|
+
// Define schema
|
|
470
|
+
model User {
|
|
471
|
+
id Int @id @default(autoincrement())
|
|
472
|
+
email String @unique
|
|
473
|
+
name String
|
|
474
|
+
posts Post[]
|
|
475
|
+
createdAt DateTime @default(now())
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
model Post {
|
|
479
|
+
id Int @id @default(autoincrement())
|
|
480
|
+
title String
|
|
481
|
+
content String
|
|
482
|
+
authorId Int
|
|
483
|
+
author User @relation(fields: [authorId], references: [id])
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// Query with ORM
|
|
487
|
+
const user = await prisma.user.findUnique({
|
|
488
|
+
where: { email: 'user@example.com' },
|
|
489
|
+
include: { posts: true }
|
|
490
|
+
});
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
**Example: SQLAlchemy (Python)**
|
|
494
|
+
```python
|
|
495
|
+
from sqlalchemy import Column, Integer, String, ForeignKey
|
|
496
|
+
from sqlalchemy.orm import relationship, declarative_base
|
|
497
|
+
|
|
498
|
+
Base = declarative_base()
|
|
499
|
+
|
|
500
|
+
class User(Base):
|
|
501
|
+
__tablename__ = 'users'
|
|
502
|
+
id = Column(Integer, primary_key=True)
|
|
503
|
+
email = Column(String, unique=True)
|
|
504
|
+
name = Column(String)
|
|
505
|
+
posts = relationship('Post', back_populates='author')
|
|
506
|
+
|
|
507
|
+
class Post(Base):
|
|
508
|
+
__tablename__ = 'posts'
|
|
509
|
+
id = Column(Integer, primary_key=True)
|
|
510
|
+
title = Column(String)
|
|
511
|
+
content = Column(String)
|
|
512
|
+
author_id = Column(Integer, ForeignKey('users.id'))
|
|
513
|
+
author = relationship('User', back_populates='posts')
|
|
514
|
+
|
|
515
|
+
# Query with ORM
|
|
516
|
+
user = session.query(User).filter_by(email='user@example.com').first()
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### Raw SQL
|
|
520
|
+
|
|
521
|
+
**Advantages:**
|
|
522
|
+
- ✅ Full control over queries
|
|
523
|
+
- ✅ Better performance for complex queries
|
|
524
|
+
- ✅ Database-specific features
|
|
525
|
+
- ✅ Easier to optimize
|
|
526
|
+
|
|
527
|
+
**Disadvantages:**
|
|
528
|
+
- ❌ More boilerplate code
|
|
529
|
+
- ❌ SQL injection risk (if not using prepared statements)
|
|
530
|
+
- ❌ Database-specific syntax
|
|
531
|
+
- ❌ Manual type mapping
|
|
532
|
+
|
|
533
|
+
**Example: Raw SQL with Prepared Statements**
|
|
534
|
+
```javascript
|
|
535
|
+
// Node.js (pg)
|
|
536
|
+
const result = await client.query(
|
|
537
|
+
'SELECT * FROM users WHERE email = $1',
|
|
538
|
+
['user@example.com']
|
|
539
|
+
);
|
|
540
|
+
|
|
541
|
+
// Python (psycopg2)
|
|
542
|
+
cursor.execute(
|
|
543
|
+
'SELECT * FROM users WHERE email = %s',
|
|
544
|
+
('user@example.com',)
|
|
545
|
+
)
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### When to Use Each
|
|
549
|
+
|
|
550
|
+
**Use ORM when:**
|
|
551
|
+
- ✅ Building CRUD applications
|
|
552
|
+
- ✅ Schema changes frequently
|
|
553
|
+
- ✅ Team prefers type safety
|
|
554
|
+
- ✅ Simple to moderate queries
|
|
555
|
+
- ✅ Database abstraction is valuable
|
|
556
|
+
|
|
557
|
+
**Use Raw SQL when:**
|
|
558
|
+
- ✅ Complex queries with multiple JOINs
|
|
559
|
+
- ✅ Performance is critical
|
|
560
|
+
- ✅ Using database-specific features
|
|
561
|
+
- ✅ Reporting and analytics queries
|
|
562
|
+
- ✅ Bulk operations
|
|
563
|
+
|
|
564
|
+
**Hybrid Approach:**
|
|
565
|
+
- Use ORM for most queries
|
|
566
|
+
- Use raw SQL for complex/performance-critical queries
|
|
567
|
+
- Most ORMs support raw SQL queries
|
|
568
|
+
|
|
569
|
+
---
|
|
570
|
+
|
|
571
|
+
## Common Patterns
|
|
572
|
+
|
|
573
|
+
### Repository Pattern
|
|
574
|
+
|
|
575
|
+
**Encapsulate database access logic:**
|
|
576
|
+
|
|
577
|
+
```typescript
|
|
578
|
+
// TypeScript: Repository pattern
|
|
579
|
+
interface UserRepository {
|
|
580
|
+
findById(id: number): Promise<User | null>;
|
|
581
|
+
findByEmail(email: string): Promise<User | null>;
|
|
582
|
+
create(user: CreateUserDto): Promise<User>;
|
|
583
|
+
update(id: number, user: UpdateUserDto): Promise<User>;
|
|
584
|
+
delete(id: number): Promise<void>;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
class PrismaUserRepository implements UserRepository {
|
|
588
|
+
constructor(private prisma: PrismaClient) {}
|
|
589
|
+
|
|
590
|
+
async findById(id: number): Promise<User | null> {
|
|
591
|
+
return this.prisma.user.findUnique({ where: { id } });
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
async findByEmail(email: string): Promise<User | null> {
|
|
595
|
+
return this.prisma.user.findUnique({ where: { email } });
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
async create(user: CreateUserDto): Promise<User> {
|
|
599
|
+
return this.prisma.user.create({ data: user });
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
async update(id: number, user: UpdateUserDto): Promise<User> {
|
|
603
|
+
return this.prisma.user.update({ where: { id }, data: user });
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
async delete(id: number): Promise<void> {
|
|
607
|
+
await this.prisma.user.delete({ where: { id } });
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
### Unit of Work Pattern
|
|
613
|
+
|
|
614
|
+
**Manage transactions across multiple operations:**
|
|
615
|
+
|
|
616
|
+
```typescript
|
|
617
|
+
// TypeScript: Unit of Work pattern
|
|
618
|
+
class UnitOfWork {
|
|
619
|
+
constructor(private prisma: PrismaClient) {}
|
|
620
|
+
|
|
621
|
+
async execute<T>(work: (tx: PrismaClient) => Promise<T>): Promise<T> {
|
|
622
|
+
return this.prisma.$transaction(async (tx) => {
|
|
623
|
+
return work(tx);
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
// Usage
|
|
629
|
+
const uow = new UnitOfWork(prisma);
|
|
630
|
+
await uow.execute(async (tx) => {
|
|
631
|
+
const user = await tx.user.create({ data: { email: 'user@example.com' } });
|
|
632
|
+
await tx.post.create({ data: { title: 'First Post', authorId: user.id } });
|
|
633
|
+
});
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### Query Builder Pattern
|
|
637
|
+
|
|
638
|
+
**Build queries programmatically:**
|
|
639
|
+
|
|
640
|
+
```typescript
|
|
641
|
+
// TypeScript: Query builder (Knex.js)
|
|
642
|
+
const users = await knex('users')
|
|
643
|
+
.select('id', 'name', 'email')
|
|
644
|
+
.where('status', 'active')
|
|
645
|
+
.andWhere('created_at', '>', '2024-01-01')
|
|
646
|
+
.orderBy('created_at', 'desc')
|
|
647
|
+
.limit(10);
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
---
|
|
651
|
+
|
|
652
|
+
## Best Practices
|
|
653
|
+
|
|
654
|
+
### General Guidelines
|
|
655
|
+
|
|
656
|
+
**DO:**
|
|
657
|
+
- ✅ Use prepared statements to prevent SQL injection
|
|
658
|
+
- ✅ Use connection pooling
|
|
659
|
+
- ✅ Index foreign keys
|
|
660
|
+
- ✅ Use transactions for multi-step operations
|
|
661
|
+
- ✅ Handle errors gracefully
|
|
662
|
+
- ✅ Monitor query performance
|
|
663
|
+
- ✅ Use appropriate data types
|
|
664
|
+
- ✅ Normalize data (see `relational-schema-design.md`)
|
|
665
|
+
- ✅ Document complex queries
|
|
666
|
+
|
|
667
|
+
**DON'T:**
|
|
668
|
+
- ❌ Concatenate user input into SQL queries
|
|
669
|
+
- ❌ Use SELECT * in production code
|
|
670
|
+
- ❌ Create indexes on every column
|
|
671
|
+
- ❌ Ignore transaction isolation levels
|
|
672
|
+
- ❌ Store sensitive data unencrypted
|
|
673
|
+
- ❌ Use NOLOCK hint without understanding implications
|
|
674
|
+
|
|
675
|
+
### Performance Tips
|
|
676
|
+
|
|
677
|
+
- ✅ Use EXPLAIN/EXPLAIN ANALYZE to understand query plans
|
|
678
|
+
- ✅ Create indexes on frequently queried columns
|
|
679
|
+
- ✅ Avoid N+1 queries (use JOINs or batch loading)
|
|
680
|
+
- ✅ Use pagination for large result sets
|
|
681
|
+
- ✅ Cache frequently accessed data
|
|
682
|
+
- ✅ Use database-specific optimizations
|
|
683
|
+
|
|
684
|
+
**See `performance-optimization.md` for detailed performance guidelines.**
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## Related Documentation
|
|
689
|
+
|
|
690
|
+
- **relational-schema-design.md**: Schema design and normalization
|
|
691
|
+
- **relational-indexing.md**: Indexing strategies
|
|
692
|
+
- **relational-query-optimization.md**: Query optimization
|
|
693
|
+
- **relational-transactions.md**: Transaction management
|
|
694
|
+
- **security-standards.md**: Database security
|
|
695
|
+
- **performance-optimization.md**: Performance tuning
|
|
696
|
+
```
|
|
697
|
+
|