Metadata-Version: 2.4
Name: unboil-sqlalchemy-mixins
Version: 0.1.12
Summary: A library providing reusable mixins for SQLAlchemy models.
Project-URL: homepage, https://github.com/eyueldk/unboil-sqlalchemy-mixins
Project-URL: repository, https://github.com/eyueldk/unboil-sqlalchemy-mixins
Author: eyueldk
License: MIT
License-File: LICENSE
Keywords: mixins,sqlalchemy,unboil
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.9
Requires-Dist: sqlalchemy>=2.0.0
Description-Content-Type: text/markdown


# unboil-sqlalchemy-mixins

Reusable SQLAlchemy mixins to reduce boilerplate in your Python ORM models.

## Installation

```bash
pip install unboil-sqlalchemy-mixins
```

## Mixins



### IdentifiableMixin
Adds a string `id` primary key. Optionally, use a prefix:
```python
from unboil_sqlalchemy_mixins import IdentifiableMixin

class User(IdentifiableMixin, Base): ...
# With prefix:
class PrefixedUser(IdentifiableMixin.with_config("user_"), Base): ...
```

### TimestampedMixin
Adds `created_at` and `updated_at` fields (auto-managed):
```python
from unboil_sqlalchemy_mixins import TimestampedMixin
class Post(TimestampedMixin, Base): ...
```



### TenantOwnedMixin
Adds a required, indexed `tenant_id` column. Optionally, specify a foreign key:
```python
from unboil_sqlalchemy_mixins import TenantOwnedMixin

class Invoice(TenantOwnedMixin, Base): ...
# With foreign key:
class InvoiceWithFK(TenantOwnedMixin.with_config("tenants.id"), Base): ...
```



### UserOwnedMixin
Adds a required, indexed `user_id` column. Optionally, specify a foreign key:
```python
from unboil_sqlalchemy_mixins import UserOwnedMixin

class Note(UserOwnedMixin, Base): ...
# With foreign key:
class NoteWithFK(UserOwnedMixin.with_config("users.id"), Base): ...
```

---
MIT License