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

Uploaded Python 3

File details

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

File metadata

  • Download URL: hipal_mixin_scrud-1.0.7.tar.gz
  • Upload date:
  • Size: 9.9 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.7.tar.gz
Algorithm Hash digest
SHA256 dc09068b123ab0dca008e13fa3a4291855996868b3682262b672fe3d1db627a6
MD5 ad25c8344f185b666f289ba26e5e5f4d
BLAKE2b-256 ab3f8e824eda43537c8705cc5f3d8e47bab52381e14e760903bd6710c510dea3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hipal_mixin_scrud-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 13761ad34124c2a0e01a2a06e36d5cacb01340ca6250f1b250045b0fd7045b18
MD5 76e4fb6818aed476d761b6443734255a
BLAKE2b-256 6efa169c145f28dd469149219156918e9f9b53104c7ec462c884b036c8291dd5

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