Skip to content
cccskills
FreePublished on GitHub

database-patterns

Database design patterns including schema design, migrations, soft deletes, and Exposed ORM. Use when creating tables, writing migrations, or implementing repositories.

The English summary is being prepared. Showing the original description.

See how to install

Files included (2)

  • SKILL.md2.8 KB
  • code-templates.md3.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Database Patterns — Quick Reference

Hard Rules

RuleDoDon't
Data typesTEXTVARCHAR
Primary keysUUIDSERIAL, BIGINT
Soft deletedeleted_at TIMESTAMPDELETE FROM
Foreign keysApp-level validationREFERENCES, ON DELETE CASCADE
Standard columnsid, created_at, updated_at, deleted_atSkip any of these

Migration Template

SQL migration with table, trigger, and partial indexes for soft delete.

See code-templates.md for the complete SQL template.

Exposed Table Object

Extend UUIDTable, use text() not varchar(), add standard timestamp columns.

See code-templates.md for the complete template.

Entity Data Class

Implement Entity<Instant>, include all business fields + createdAt, updatedAt, deletedAt.

See code-templates.md for the complete template.

Repository Pattern

Interface + Default* implementation. Reads on db.replica, writes on db.primary. Soft delete via deletedAt update. convert() method maps ResultRow to entity.

See code-templates.md for the full interface + implementation code.

When Creating a New Table

Full checklist:

  1. SQL migration file (next number in sequence)
  2. Table object in module-repository/table/
  3. Entity data class in module-repository/entity/
  4. Enum/constants in module-repository/constant/ (if needed)
  5. Repository interface + implementation
  6. Factory bean for repository
  7. Repository tests

Flyway Rules

  • NEVER add a migration that fills a gap in deployed sequence
  • NEVER rename an already-deployed migration file
  • Migration numbers must be sequential from the latest
  • Keep migrations simple and focused (one table per migration)

Gotchas

  • Only id uses .value -- everything else is direct. row[Table.id].value gives UUID, but row[Table.projectId] already returns UUID. Adding .value to non-id columns causes compile errors.
  • gen_random_uuid() vs uuid_generate_v4() -- pick one per project. Mixing them works but confuses code review. Check existing migrations for which one the project uses.
  • Don't re-declare createdAt, updatedAt, deletedAt if extending SoftDeleteTable. They're inherited. Declaring them again causes duplicate column errors.
  • Forgetting WHERE deleted_at IS NULL on indexes wastes space. Every index on a soft-delete table should be partial. Full indexes include dead records nobody queries.
  • Text columns that hold JSON should still use text() in Exposed. JSONB in Postgres, text() in Kotlin, serialize/deserialize in the entity layer.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Creates RPC-style endpoint following layered architecture (Controller → Manager → Repository). Use when creating new API endpoints or CRUD operations.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Write blog posts, guides, tutorials, and long-form content. Sounds like a real person, not AI. Use when the user wants polished written content.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Design RPC-style APIs with layered architecture (Controller → Manager → Repository). Use when creating new API endpoints, designing API contracts, or reviewing API patterns.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Run a structured brainstorm session for startup ideas. Takes a theme or problem and generates ideas with quick gut-checks. Use when the user wants to explore a space or generate new ideas.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Run real browser QA with Playwright. Use when testing a frontend feature, verifying UI before PR, smoke testing after deploy, or investigating reported visual bugs.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

CI/CD pipeline patterns for GitHub Actions, PR automation, and deployment workflows. Use when setting up CI, fixing broken pipelines, automating PR checks, or configuring deployment.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

See all skills by c0x12c

Report a problem with this skill