Awesome-omni-skill sqlmodel-task-models
This skill should be used when defining a robust, type-safe, and async-compatible database schema for the Todo application using SQLModel, ensuring compatibility with Better Auth and optimized for PostgreSQL.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/backend/sqlmodel-task-models" ~/.claude/skills/diegosouzapw-awesome-omni-skill-sqlmodel-task-models && rm -rf "$T"
manifest:
skills/backend/sqlmodel-task-models/SKILL.mdsource content
SQLModel Task Models
This skill providing guidance on defining a robust database schema using SQLModel for the Todo application.
Purpose
Defining a robust, type-safe, and async-compatible database schema for the Todo application using SQLModel, ensuring compatibility with Better Auth and optimized for PostgreSQL.
Capabilities
- User Model: Schema aligned with Better Auth requirements.
- Task Model: Full CRUD capability with relational mapping to Users.
- Relational Integrity: Proper foreign key constraints and back-references.
- Performance: Strategic indexing on
anduser_id
fields.completed - Safety: Automated timestamp management (
,created_at
).updated_at
Implementation Details
Models Definition
from sqlmodel import SQLModel, Field, Relationship from typing import List, Optional from datetime import datetime class User(SQLModel, table=True): id: str = Field(primary_key=True) email: str = Field(unique=True, index=True) name: Optional[str] = None created_at: datetime = Field(default_factory=datetime.utcnow) tasks: List["Task"] = Relationship(back_populates="user") class Task(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) user_id: str = Field(foreign_key="user.id", index=True) title: str description: Optional[str] = None completed: bool = Field(default=False, index=True) created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow) user: Optional[User] = Relationship(back_populates="tasks")
Best Practices
- Using
for models that map to database tables.table=True - Explicitly defining indexes for fields used in
clauses (e.g.,WHERE
,user_id
).completed - Using
for consistent cross-region timestamping.datetime.utcnow - Keeping
as a string to match Better Auth's UUID/ID format.user_id