Metadata-Version: 2.3
Name: f3-data-models
Version: 0.3.6
Summary: The data schema and models for F3 Nation applications.
License: MIT
Author: Evan Petzoldt
Author-email: evan.petzoldt@protonmail.com
Requires-Python: >=3.12,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: alembic (>=1.14.0,<2.0.0)
Requires-Dist: alembic-postgresql-enum (>=1.6.1,<2.0.0)
Requires-Dist: cloud-sql-python-connector (>=1.13.0,<2.0.0)
Requires-Dist: graphviz (>=0.20.3,<0.21.0)
Requires-Dist: pg8000 (>=1.31.2,<2.0.0)
Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0)
Requires-Dist: sphinx (>=8.1.3,<9.0.0)
Requires-Dist: sphinx-autodoc-typehints (>=2.5.0,<3.0.0)
Requires-Dist: sphinx-multiversion (>=0.2.4,<0.3.0)
Requires-Dist: sphinx-rtd-theme (>=3.0.2,<4.0.0)
Requires-Dist: sqlalchemy (>=2.0.36,<3.0.0)
Requires-Dist: sqlalchemy-schemadisplay (>=2.0,<3.0)
Requires-Dist: sqlmodel (>=0.0.22,<0.0.23)
Project-URL: Documentation, https://github.io/F3-Nation/f3-data-models
Project-URL: Repository, https://github.com/F3-Nation/f3-data-models
Description-Content-Type: text/markdown

# Overview

This repository defines the F3 data structure, used by the F3 Slack Bot, Maps, etc. The projected uses SQLAlchemy to define the tables / models.

# Running Locally

To load the data structure in your database:

1. Set up a local db, update `.env.example` and save as `.env`
2. Clone the repo, use Poetry to install dependencies:
```sh
poetry env use 3.12
poetry install
```
3. Run the alembic migration:
```sh
source .env && poetry run alembic upgrade head
```

# Contributing

If you would like to make a change, you will need to:

1. Make the change in `models.py`
2. Make a alembic revision:
```sh
source .env && alembic revision --autogenerate -m "Your Message Here"
```
3. Make any edits to the migration script in `alembic/versions`
4. Run the upgrade on your local db:
```sh
source .env && alembic upgrade head
```
5. Bump the version on `pyproject.toml`:
```sh
poetry version patch[minor][major]
```
6. Tag your final commit and make sure to push those tags to trigger the pypi package build:
```sh
git tag <new_version> -a -m "Your message here"
git push origin --tags
```
> [!NOTE]
> The github pages documentation will be updated when you push to `main`, but if you would like to preview locally, run:

```sh
poetry run sphinx-build -b html docs docs/_build/html
cd docs
poetry run python -m http.server --directory _build/html
```

> [!TIP]  
> Adding new fields as nullable (ie `Optional[]`) has the best chance of reducing breaking changes to the apps.
