HackPi - is a library for the FastAPI framework that adds additional functionality that simplifies development.
Project description
HackPi
HackPi - is a library for the FastAPI framework that adds additional functionality that simplifies development.
Introduction
Features:
- Генерация endpoints по моделям SQLAlchemy и Pydantic
- Готовые методы регистрации, авторизации
- Система ролей с возможностью ограничения доступа
Библиотека может использоваться для быстрого прототипирования бекенда, либо для построения функционала для хакатонов.
Installing
Чтобы установить библиотеку, выполните в терминале простую команду:
pip3 install hackpi
Чтобы проверить наличие библиотеки на компьютере, нужно ввести следующую команду:
pip3 list
И в выведенном вы увидите библиотеку hackpi с текущей версией (актуальная - 0.1.1).
Ура! Теперь вы можете пользоваться всеми возможностями HackPi.
Usage
Подключение к базе данных
Для подключения к базе данных используется класс Database. При содании объекта этого класса, нужно передать в конструктор расположение SQLite3 базы данных. Пока что HackPi может работать только с этой базой данных.
# db.py
from hackpi import Database
db = Database('sqlite:///database.sqlite3')
В последствии, мы можем передавать объект db в другие методы, которые будут записывать информацию в базу данных.
Модели SQLAlchemy и Pydantic
В этом туториале вы увидите работу библиотеки на примере работы с пользователем. Нам всегда необходимо иметь две модели: модель SQLAlchemy и модель Pydantic.
# models.py
from hackpi import Base
from sqlalchemy import Column, Integer, String
from db import db
class User(Base):
__tablename__ = 'users'
id: int = Column(Integer, primary_key=True)
email: str = Column(String, unique=True)
password: str = Column(String)
db.create_all()
Разберем файл models.py. Мы создали модель SQLAlchemy, наследовав ее от Base. Название таблицы - users. Таблица имеет следующие столбцы: id, email, password. Затем, мы вызвали метод для создания таблицы в базе данных.
# schemas.py
from pydantic import BaseModel
class User(BaseModel):
email: str
password: str
Мы создали простую схему Pydantic, которая содержит в себе только email и password.
Создание роутеров
Итак, чтобы сгенерировать эндпоинты, используя модели SQLAlchemy и Pydantic, необходимо создать main.py файл, и написать в нем следующее:
# main.py
from fastapi import FastAPI
from hackpi import HackPi, Router
from models import User as UserModel
from schemas import User as UserSchema
from db import db
app = FastAPI()
hp = HackPi(db=db)
router = Router(hp, UserModel, UserSchema)
app.include_router(router.get_router())
Регистрация и авторизация
Если вы хотите добавить в свое приложение регистрацию и авторизацию, для этого существует класс Auth. Введите следующий код, чтобы добавить это в свое приложение:
# main.py
from fastapi import FastAPI
from hackpi.Auth import HackPi, Auth, JWT
from db import db
app = FastAPI()
jwt = JWT('secret')
hp = HackPi(db=db, jwt=jwt)
app.include_router(Auth(hp)())
Это добавит следующие эндпоинты:
/sign-up/sign-in/get-users/get-user-by-id/userinfo-update/user-delete
Ролевая система
Чтобы к некоторым эндпоинтам доступ могло иметь только ограниченное количество пользователей, можно добавить ролевую систему:
# main.py
from fastapi import FastAPI
from hackpi import HackPi, Router, JWT, Methods, StandartRoles
from models import User as UserModel
from schemas import User as UserSchema
from db import db
app = FastAPI()
jwt = JWT('secret')
hp = HackPi(db=db, jwt=jwt)
router = Router(hp, UserModel, UserSchema, {
Methods.GET: [StandartRoles.MODER]
})
app.include_router(router.get_router())
Введя команду uvicorn main:app --reload в терминал, запустится бекенд. Можно перейти в документацию, и увидеть результат генерации эндпоинтов.
⚠️ Библиотека не является полностью безопасной и не должна быть использована на реальных продакшен решениях!
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 hackpi-0.1.4.tar.gz.
File metadata
- Download URL: hackpi-0.1.4.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.9 Linux/6.1.9-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ba7a055b73c79e8e0b105f21255e33a4df2bfbc00554b1dd7e2b29a7d625cce
|
|
| MD5 |
e539699f73b6e95aca58cf88a6589191
|
|
| BLAKE2b-256 |
6a025d389249b55928971f6fa4a181da8f37ab52a4f3436365c0d6828d11054e
|
File details
Details for the file hackpi-0.1.4-py3-none-any.whl.
File metadata
- Download URL: hackpi-0.1.4-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.9 Linux/6.1.9-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8b253c89455a771a5f5b99d101b164170055c56a3558d2034da03c2b943e677
|
|
| MD5 |
ea77b110fb7a6b2970100b06872b5ef0
|
|
| BLAKE2b-256 |
79399104c03d5ae2d88f27df3715932766c366a5286460a6b6ed62f96e054dea
|