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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90bffce08c1e5786e8c2f758d64c4f22f9caaac1bbfcb506504eebc60c9f3a64
|
|
| MD5 |
924ffc2119dd613742b01d79d7095708
|
|
| BLAKE2b-256 |
ed6900e2a03379986a28f147efdd41b2b967481d22b0701ba1127fd8273829c5
|
File details
Details for the file hipal_mixin_scrud-1.0.4-py3-none-any.whl.
File metadata
- Download URL: hipal_mixin_scrud-1.0.4-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea05f977f4b91615129859bae5af81b9ab9f54ecca0cb1b572c8d442c980946b
|
|
| MD5 |
b201283487a1ad375c509acf14c16645
|
|
| BLAKE2b-256 |
5eda61d78f5213b5e491305f3669fab9e647c4b17cbfde2bf2ea105d9b839c43
|