Skip to main content

HackPi - is a library for the FastAPI framework that adds additional functionality that simplifies development.

Project description

HackPi

logotype

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

hackpi-0.1.4.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hackpi-0.1.4-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

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

Hashes for hackpi-0.1.4.tar.gz
Algorithm Hash digest
SHA256 8ba7a055b73c79e8e0b105f21255e33a4df2bfbc00554b1dd7e2b29a7d625cce
MD5 e539699f73b6e95aca58cf88a6589191
BLAKE2b-256 6a025d389249b55928971f6fa4a181da8f37ab52a4f3436365c0d6828d11054e

See more details on using hashes here.

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

Hashes for hackpi-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a8b253c89455a771a5f5b99d101b164170055c56a3558d2034da03c2b943e677
MD5 ea77b110fb7a6b2970100b06872b5ef0
BLAKE2b-256 79399104c03d5ae2d88f27df3715932766c366a5286460a6b6ed62f96e054dea

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