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.2.tar.gz (7.8 kB view hashes)

Uploaded Source

Built Distribution

hackpi-0.1.2-py3-none-any.whl (7.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page