Skip to main content

Libreria para crud basica.

Project description

Hipal Mixin Scrud

Libreria para generar rutas generales para una crud basica

Instalacion

pip install hipal-mixin-scrud

Como usar

Para usar la libreria se debe importar la instancia "MixinCrud" para luego en su constructor enviarle los argumentos necesarios, ejemplo:

from schemas import UserSchema, CreateUserSchema, UpdateUserSchema
from db.db_session import db_session
from models.user import User

from hipal_mixin_scrud.mixin import MixinCrud

users_router = MixinCrud(
    schema=UserSchema,
    db_session=db_session,
    model=User,
    prefix="/users",
    create_schema=CreateUserSchema,
    update_schema=UpdateUserSchema
)

donde:

  • schema: Sera el schema principal para listar o paginar los datos
  • db_session: La session de la base de datos otorgada por el motor implementado mediante sqlalchemy
  • model: El modelo con el que se hara la crud basica
  • prefix: La raiz de los endpoints
  • create_schema: El schema con el que se mapearan los datos para crear los registros en el modelo
  • update_schema: El schema con el que se mapearan los datos para la actualizacion de un registro existente del modelo

Uso Avanzado

Si se requiere tener mas control de las rutas generadas, se tiene lo siguiente:

Para especificar que rutas se requieren y cuales no, se hace uso de 5 parametros:

  • has_update
  • has_get_list
  • has_delete_one
  • has_create
  • has_get_one

Por defecto todas estan en "True", y reciben booleanos para indicar si se genera la ruta o no:

from schemas import UserSchema, CreateUserSchema, UpdateUserSchema
from db.db_session import db_session
from models.user import User

from hipal_mixin_scrud.mixin import MixinCrud

users_router = MixinCrud(
    schema=UserSchema,
    db_session=db_session,
    model=User,
    prefix="/users",
    create_schema=CreateUserSchema,
    update_schema=UpdateUserSchema,
    has_update=False,
    has_get_list=True,
    has_delete_one=False,
    has_create=False,
    has_get_one=True,
)

Para especificar una "query prefija" es decir, una query por defecto que se concatenara con la query final en toda la CRUD principal, hacemos uso del parametro: query, Ejemplo:

from fastapi import Request
from schemas import UserSchema, CreateUserSchema, UpdateUserSchema
from db.db_session import db_session
from models.user import User

from hipal_mixin_scrud.mixin import MixinCrud


def default_query(
    request: Request,
):
    account_id = request.headers.get("account_id")
    profile_id = request.headers.get("profile_id")

    query = db_session.query(User).filter(User.id > 0)

    return query

users_router = MixinCrud(
    schema=UserSchema,
    db_session=db_session,
    model=User,
    prefix="/users",
    create_schema=CreateUserSchema,
    update_schema=UpdateUserSchema,
    query=default_query
)

El parametro query es opcional, y en caso de que se requiera recibira una funcion que como obligacion debera recibir por argument "request" y tendra que devolver la query que se requiera.

Adicionalmente se podra user "users_router" para generar las rutas como generalmente las conocemos:

@users_router.get("/me", response_model=UserSchema)
def endpoint() -> UserSchema:
    return {"msg":"prueba"}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hipal_mixin_scrud-1.0.3.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hipal_mixin_scrud-1.0.3-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file hipal_mixin_scrud-1.0.3.tar.gz.

File metadata

  • Download URL: hipal_mixin_scrud-1.0.3.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.0

File hashes

Hashes for hipal_mixin_scrud-1.0.3.tar.gz
Algorithm Hash digest
SHA256 8d03b4bb9169d734ef1381d51bb3d9ed9caefff7116fcfed4156eb33a6a7b6a6
MD5 f7f3339e70a61e40777d95b0c54d9d98
BLAKE2b-256 a92760a165a07a5cd04773f0b795289a7c837d36ab32d91eb9c10f941dd6ca4e

See more details on using hashes here.

File details

Details for the file hipal_mixin_scrud-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for hipal_mixin_scrud-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 03b9389264b30217ef8ef408867560b0f80ab368a4b6de806b5c20751938cb21
MD5 30261b677b4cb021b50fc02fae18e861
BLAKE2b-256 e4f9c6ed8ee16c12474e67290e4673a08d23a4081f23cba43b929b856cd8dae3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page