Coverage for src/cstlcore/newsletter/models.py: 100%
18 statements
« prev ^ index » next coverage.py v7.9.1, created at 2026-02-19 12:46 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2026-02-19 12:46 +0000
1import uuid
2from datetime import datetime
4from pydantic import BaseModel
5from sqlmodel import TIMESTAMP, Column, Field, SQLModel, text
8class NewsletterSubscribedBase(SQLModel):
9 email: str = Field(index=True, nullable=False, unique=True)
12class NewsletterSubscribed(NewsletterSubscribedBase, table=True):
13 id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
14 created_at: datetime | None = Field(
15 default=None,
16 sa_column=Column(
17 TIMESTAMP(timezone=True),
18 nullable=False,
19 server_default=text("CURRENT_TIMESTAMP"),
20 ),
21 )
24class NewsletterSubscribedPublic(NewsletterSubscribedBase):
25 id: uuid.UUID
26 created_at: datetime
29class NewsletterSubscribedCreate(SQLModel):
30 email: str
33class NewsletterForm(BaseModel):
34 admin_token: str # Admin token for authentication
35 title: str
36 content: str