Metadata-Version: 2.4
Name: sanjaya-sqlalchemy
Version: 1.0.0.dev1770946096
Summary: SQLAlchemy Core data-provider implementation for the Sanjaya reporting platform
Project-URL: Repository, https://github.com/tjb1982/sanjaya
Project-URL: Issues, https://github.com/tjb1982/sanjaya/issues
Author: Tom Brennan
License-Expression: MIT
License-File: LICENSE
Keywords: analytics,data-provider,reporting,sqlalchemy
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: sanjaya-core~=1.0
Requires-Dist: sqlalchemy<3,>=2.0
Provides-Extra: dev
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Description-Content-Type: text/markdown

# sanjaya-sqlalchemy

SQLAlchemy Core data-provider implementation for the Sanjaya reporting platform.

Translates the `DataProvider` interface from `sanjaya-core` into SQL queries using SQLAlchemy Core expressions. No ORM required.

## Installation

```
pip install sanjaya-sqlalchemy
```

## Usage

```python
from sqlalchemy import MetaData, create_engine
from sanjaya_core.types import ColumnMeta, DatasetCapabilities
from sanjaya_core.enums import ColumnType
from sanjaya_sqlalchemy import SQLAlchemyProvider

engine = create_engine("postgresql://...")
metadata = MetaData()
metadata.reflect(bind=engine)

provider = SQLAlchemyProvider(
    key="trade_activity",
    label="Trade Activity",
    engine=engine,
    selectable=metadata.tables["trade_activity"],
    columns=[
        ColumnMeta(name="id", label="ID", type=ColumnType.NUMBER),
        ColumnMeta(name="desk", label="Desk", type=ColumnType.STRING),
        ColumnMeta(name="amount", label="Amount", type=ColumnType.CURRENCY),
    ],
    capabilities=DatasetCapabilities(pivot=True),
)
```
