Coverage for snekql/mariadb/model.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-07 21:13 +0300

1"""MariaDB table model declaration base.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any, ClassVar, Literal, TypeVar 

6 

7from snekql.indexes import NormalizedIndex 

8from snekql.model import Model as BaseModel 

9from snekql.model import ModelMeta, Table 

10from snekql.storage import Attr 

11 

12StateT = TypeVar("StateT") 

13ReadModelT = TypeVar("ReadModelT", bound=Table[Any]) 

14 

15 

16class Model[StateT, ReadModelT: Table[Any]](BaseModel[StateT, ReadModelT]): 

17 """MariaDB table model base for backend-specific declarations. 

18 

19 >>> class User[S = Pending](Model[S, "User[Fetched]"]): 

20 ... email: User.Col[str] = Text(nullable=False) 

21 """ 

22 

23 __snekql_backend__: ClassVar[Literal["mariadb"]] = "mariadb" 

24 __snekql_columns__: ClassVar[dict[str, Attr[Any, Any, Any, Any, Any]]] 

25 __snekql_indexes__: ClassVar[tuple[NormalizedIndex, ...]] 

26 __tablename__: ClassVar[str] 

27 

28 

29__all__ = ["Model", "ModelMeta"]