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.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: hipal_mixin_scrud-1.0.4.tar.gz
  • Upload date:
  • Size: 8.2 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.4.tar.gz
Algorithm Hash digest
SHA256 90bffce08c1e5786e8c2f758d64c4f22f9caaac1bbfcb506504eebc60c9f3a64
MD5 924ffc2119dd613742b01d79d7095708
BLAKE2b-256 ed6900e2a03379986a28f147efdd41b2b967481d22b0701ba1127fd8273829c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hipal_mixin_scrud-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ea05f977f4b91615129859bae5af81b9ab9f54ecca0cb1b572c8d442c980946b
MD5 b201283487a1ad375c509acf14c16645
BLAKE2b-256 5eda61d78f5213b5e491305f3669fab9e647c4b17cbfde2bf2ea105d9b839c43

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