Shared base logic used across AldanDev projects.
Project description
notora
Shared base logic used across AldanDev projects.
- v1 (legacy):
notora.v1 - v2 (next-gen toolkit):
notora.v2
v2 quickstart
from notora.v2.repositories import Repository, RepoConfig
from notora.v2.services import RepositoryService, ServiceConfig
repo = Repository(
User,
config=RepoConfig(default_limit=50),
)
service = RepositoryService(
repo,
config=ServiceConfig(detail_schema=UserSchema, list_schema=UserListSchema),
)
v2 docs
docs/v2/index.mddocs/v2/models.mddocs/v2/repositories.mddocs/v2/services.mddocs/v2/query-dsl.mddocs/v2/pagination.mddocs/v2/m2m.mddocs/v2/recipes.md
Listing and pagination
from notora.v2.repositories import QueryParams, PaginationParams
rows = await service.list_raw(
session,
limit=None, # no limit
)
params = QueryParams(filters=[...], ordering=[...], limit=None)
rows = await service.list_raw_params(session, params)
page = await service.paginate_params(
session,
PaginationParams(limit=20, offset=0, filters=[...]),
)
Repository/service factories
from notora.v2.repositories import build_repository, RepoConfig
from notora.v2.services import build_service, ServiceConfig
repo = build_repository(User, config=RepoConfig(default_limit=25))
service = build_service(User, repo=repo, service_config=ServiceConfig(detail_schema=UserSchema))
Query DSL (FastAPI-friendly)
from fastapi import Depends
from notora.v2.repositories import (
FilterField,
QueryParams,
QueryInput,
SortField,
build_query_params,
make_query_params_dependency,
)
filter_fields = {
'name': FilterField(resolver=lambda m: m.name, value_type=str),
'age': FilterField(resolver=lambda m: m.age, value_type=int, operators={'eq', 'gte', 'lte'}),
}
sort_fields = {
'name': SortField(resolver=lambda m: m.name),
'created_at': SortField(resolver=lambda m: m.created_at),
}
def query_params(query: QueryInput = Depends()) -> QueryParams[User]:
return build_query_params(
query,
model=User,
filter_fields=filter_fields,
sort_fields=sort_fields,
)
query_params_dep = make_query_params_dependency(
model=User,
filter_fields=filter_fields,
sort_fields=sort_fields,
)
# Example request:
# /users?filter=name:eq:john&filter=age:gte:18&sort=-created_at&limit=20&offset=0
Supported operators: eq, ne, lt, lte, gt, gte, in, ilike, isnull.
M2M sync modes
from notora.v2.services import M2MSyncMode
class UserService(RepositoryService[UUID, User, UserSchema]):
m2m_sync_mode: M2MSyncMode = M2MSyncMode.ADD
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
notora-0.15.0.tar.gz
(111.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
notora-0.15.0-py3-none-any.whl
(53.6 kB
view details)
File details
Details for the file notora-0.15.0.tar.gz.
File metadata
- Download URL: notora-0.15.0.tar.gz
- Upload date:
- Size: 111.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0afa032e64cb51dca83e6b6ea9cfe77623f375abef94abe6d218ec380901bcad
|
|
| MD5 |
e1db38ac90e1d284383bd71022702f7f
|
|
| BLAKE2b-256 |
a48382af25950c723b11c942a7bfaa163094e641731809a444d7d8bfea51570a
|
File details
Details for the file notora-0.15.0-py3-none-any.whl.
File metadata
- Download URL: notora-0.15.0-py3-none-any.whl
- Upload date:
- Size: 53.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25a204f4019906b476f61fe1fd7f6ad88b54059edfde5513a72f268376dd23cb
|
|
| MD5 |
3b469a440367a25ef053b48ddfad3d2e
|
|
| BLAKE2b-256 |
1bfbb43c3c33cfe6789c4ba9a707fa6998799b6476de3bffe43c6385b64f3ee2
|