Skip to main content

FastAPI CLI Library

Project description

MakeFast - FastAPI CLI Manager

Python 3.8+ License: MIT

Welcome to MakeFast, a FastAPI CLI library designed to streamline your development workflow. With MakeFast, you can efficiently manage your projects, and focus on writing high-quality code.

Table of Contents

Installation

To install MakeFast, simply run the following command in your terminal:

pip install makefast

After the run this command to make the project template:

makefast init

Finally, run the:

pip install -r requirements.txt

To run the project, you can run the uvicorn command:

uvicorn main:app --port 8000 --reload

Commands

Project Creation

Command Description Options
makefast init Initializes a new project

Route Generation

Command Description Options
makefast create-route ROUTE_NAME Generates a new route --model MODEL_NAME, --request_scheme REQUEST_NAME, --response_scheme RESPONSE_NAME

Model Generation

Command Description Options
makefast create-model MODEL_NAME Generates a new model --table TABLE_NAME, --collection COLLECTION_NAME

Schema Generation

Command Description Options
makefast create-schema SCHEMA_NAME Generates a new schema

Enum Generation

Command Description Options
makefast create-enum ENUM_NAME Generates a new enum --type str

Database Configuration

Makefast provide the easiest way to configure the database and using them. By default makefast has 2 databases which is MySql and MongoDB.

MySQL

To initiate MySQL, add below lines on main.py file as necessary.

from fastapi import FastAPI
from makefast.database import MySQLDatabaseInit

app = FastAPI()

MySQLDatabaseInit.init(app)

MongoDB

To initiate MongoDB, add below lines on main.py file as necessary.

from fastapi import FastAPI
from makefast.database import MongoDBDatabaseInit

app = FastAPI()

MongoDBDatabaseInit.init(app)

Database CRUD operations

Makefast offers default functions for CRUD operations. Before using these, you need to create a model that corresponds to the MySQL table or MongoDB collection.

Create

from app.models import User

create_response = await User.create(**{
    "username": "usertest",
    "email": "test@example.com",
    "password": "test123",
})

Update

await User.update(45, **{
    "name": "New name"
})

Find one

await User.find(45)

Find all

await User.all()

Delete

await User.delete(45)

Advanced Query Builder

MakeFast’s MySQL integration includes a powerful QueryBuilder for advanced queries with validation and safety.

Filtering

# WHERE username = 'john'
users = await User.query().where("username", "john").get()

# WHERE age > 18 AND status = 'active'
users = await User.query().where("age", ">", 18).where("status", "active").get()

Joins

# INNER JOIN
results = await User.query().join("profiles", "users.id", "profiles.user_id").get()

# LEFT JOIN
results = await User.query().left_join("orders", "users.id", "orders.user_id").get()

Select Specific Columns

users = await User.query().select("id", "username", "email").get()

# With alias
users = await User.query().select_raw("users.id as user_id", "profiles.bio as profile_bio").get()

Ordering, Limit & Offset

users = await User.query().order_by("created_at", "DESC").limit(10).offset(20).get()

First / First Or Fail

user = await User.query().where("username", "john").first()
user = await User.query().where("username", "john").first_or_fail()

Pagination

users_page = await User.paginate(page=2, per_page=20)

Aggregations

Built-in aggregation helpers:

total_users = await User.count()
max_age = await User.max("age")
min_age = await User.min("age")
avg_age = await User.avg("age")
total_balance = await User.sum("balance")

Bulk Operations

Bulk Create

users = await User.bulk_create([
    {"username": "alice", "email": "alice@example.com"},
    {"username": "bob", "email": "bob@example.com"}
])

Get or Create

user, created = await User.get_or_create(username="john", defaults={"email": "john@example.com"})

Update or Create

user, created = await User.update_or_create(username="john", defaults={"email": "newjohn@example.com"})

Safe Raw Queries

MakeFast allows raw SQL execution with strict validation and safety:

results = await User.safe_raw_query("SELECT id, username FROM users WHERE status = %s", params=("active",))

By default, only SELECT queries are allowed unless you explicitly allow other operations.


Contributing

Contributions are welcome! To contribute to MakeFast, follow these steps:

  1. Fork the repository
  2. Create a new branch
  3. Make changes and commit them
  4. Create a pull request

License

MakeFast is licensed under the MIT License. See LICENSE for details.

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

makefast-2.1.4.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

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

makefast-2.1.4-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file makefast-2.1.4.tar.gz.

File metadata

  • Download URL: makefast-2.1.4.tar.gz
  • Upload date:
  • Size: 27.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for makefast-2.1.4.tar.gz
Algorithm Hash digest
SHA256 9d9571d9e2c627503caa534cb0d68cbdc91f43f2edf9c7db403226de91ec96fe
MD5 e208d4c41ed975676d59e8cc39e8cd18
BLAKE2b-256 30d6ea5306916371376f39513addba62ff94cd3ada927ce7995288abcfb139f1

See more details on using hashes here.

File details

Details for the file makefast-2.1.4-py3-none-any.whl.

File metadata

  • Download URL: makefast-2.1.4-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for makefast-2.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ff4809749ed9d97fab56bc889c9a4aba00da1846b14863d9e01df89a1ad61464
MD5 8c2c164795dae9d721a51f3dba7fde57
BLAKE2b-256 307a7d812b8a6dc8ac036c1289a7e702ffe36d5c83bf5a990f14de5b01513bbd

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