fabian/dev/: fastapi-shared-orm-0.1.0 metadata and description

Homepage Simple index

Gemeinsamer SQLAlchemy ORM-Core für Rideto-Packages

author Rideto Team
classifiers
  • Development Status :: 3 - Alpha
  • Intended Audience :: Developers
  • License :: OSI Approved :: MIT License
  • Programming Language :: Python :: 3
  • Programming Language :: Python :: 3.10
  • Programming Language :: Python :: 3.11
  • Programming Language :: Python :: 3.12
  • Topic :: Database
  • Topic :: Software Development :: Libraries :: Python Modules
description_content_type text/markdown
dynamic
  • license-file
keywords sqlalchemy, orm, database
license MIT
license_file
  • LICENSE
project_urls
  • Homepage, https://github.com/your-org/rideto
  • Repository, https://github.com/your-org/rideto
  • Issues, https://github.com/your-org/rideto/issues
requires_dist
  • sqlalchemy<3.0.0,>=2.0.0
  • pytest>=7.0.0; extra == "dev"
  • pytest-cov>=4.0.0; extra == "dev"
  • black>=23.0.0; extra == "dev"
  • mypy>=1.0.0; extra == "dev"
  • ruff>=0.1.0; extra == "dev"
requires_python >=3.10

Because this project isn't in the mirror_whitelist, no releases from root/pypi are included.

File Tox results History
fastapi_shared_orm-0.1.0-py3-none-any.whl
Size
5 KB
Type
Python Wheel
Python
3
fastapi_shared_orm-0.1.0.tar.gz
Size
7 KB
Type
Source

Shared ORM

Gemeinsamer SQLAlchemy ORM-Core für Rideto-Packages und -Anwendungen.

Überblick

Dieses Paket stellt eine zentrale SQLAlchemy Declarative Base bereit, die von allen Datenbank-Modellen im Rideto-Projekt verwendet werden muss. Dies gewährleistet:

Quick Start

from shared_orm import Base
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import sessionmaker

# 1. Definiere dein Modell
class User(Base):
    __tablename__ = "users"
    
    id = Column(Integer, primary_key=True)
    username = Column(String(50), unique=True, nullable=False)
    email = Column(String(100), unique=True, nullable=False)

# 2. Erstelle Engine und Session (in deiner Hauptanwendung)
engine = create_engine("sqlite:///example.db")
SessionLocal = sessionmaker(bind=engine)

# 3. Erstelle alle Tabellen
Base.metadata.create_all(bind=engine)

Installation

Mit Make (empfohlen)

cd packages/fastapi_shared_orm
make install-dev  # Installiert mit Dev-Dependencies
make test         # Führt Tests aus

Als Development-Dependency

Aus dem Rideto-Workspace:

pip install -e packages/fastapi_shared_orm

Mit Development-Dependencies

pip install -e "packages/shared_orm[dev]"

Produktiv-Installation

pip install shared-orm

Verwendung

Basis-Verwendung

from shared_orm import Base
from sqlalchemy import Column, Integer, String

class User(Base):
    __tablename__ = "users"
    
    id = Column(Integer, primary_key=True)
    username = Column(String(50), unique=True, nullable=False)
    email = Column(String(100), unique=True, nullable=False)

In einem Package

Jedes Package, das Datenbank-Modelle definiert, sollte shared-orm als Dependency haben:

# pyproject.toml des Packages
[project]
dependencies = [
    "shared-orm>=0.1.0",
    "sqlalchemy>=2.0.0",
]

Naming Conventions

Das Paket definiert folgende Naming Conventions für Constraints:

Diese Konventionen sorgen für stabile und vorhersagbare Namen bei Migrations.

Architektur-Hinweise

Was dieses Paket NICHT enthält

Verantwortlichkeiten

Beispiel: Engine und Session in der Hauptanwendung

# backend/database/base.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from shared_orm import Base

DATABASE_URL = "postgresql://user:password@localhost/dbname"

engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# Alle Tabellen erstellen
Base.metadata.create_all(bind=engine)

Migrations mit Alembic

In alembic/env.py:

from shared_orm import Base

# Import aller Modelle, damit Alembic sie findet
from backend.database.models import User, Image, Album
from fastapi_users_auth.models import AuthUser
# ... weitere Modelle

target_metadata = Base.metadata

Development

Setup

cd packages/fastapi_shared_orm
pip install -e ".[dev]"

Tests ausführen

pytest

Code-Formatierung

black .
ruff check .

Type-Checking

mypy fastapi_shared_orm

Lizenz

MIT License

Changelog

0.1.0 (2026-01-13)