Skip to main content

Libreria para crud basica.

Project description

Hipal Mixin Scrud

Libreria para generar rutas generales para una crud basica con el orm de SQLAlchemy

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.

Paginación

Para generar una paginacion es exactamente igual a lo dicho anteriormente, Sin embargo, recibe algunos parametros opcionales los cuales sirven para:

  • offset: Recibe el numero de la posicion del registro donde se requiere empezar a ver
  • limit: Limite de registros a visualizar
  • search: Lista de campos con su valor a buscar separados por ; ejemplo: name=alan;company=Gooogle
  • sort: ASC o DESC para especificar si se requiere el orden descendente o ascendente
  • sort_field: Nombre del campo por el cual se requiere ordenar

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.5.tar.gz (8.5 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.5-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hipal_mixin_scrud-1.0.5.tar.gz
  • Upload date:
  • Size: 8.5 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.5.tar.gz
Algorithm Hash digest
SHA256 b63f429348ea70203b75e734988a9c324f29e1207a7a1b967c6eb1812aa59495
MD5 ba5ef9a36689a16af86aefec32450027
BLAKE2b-256 2c86a507fd7d988a50685e63ddac892e1965202ee8619435d3673977197cad68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hipal_mixin_scrud-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 940301f68a5b78d941966cdc1c0f1426f7ff426096e317bb1e828e60aad747e1
MD5 48565894290163a00b39641ce3e2abb3
BLAKE2b-256 72703a4aeb2c7b4edf1b4b6e32e454ccf3cc1a8520552fbd439e61d009a82258

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