FastAPI CLI Library
Project description
MakeFast - FastAPI CLI Manager
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:
- Fork the repository
- Create a new branch
- Make changes and commit them
- Create a pull request
License
MakeFast is licensed under the MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
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 makefast-2.1.6.tar.gz.
File metadata
- Download URL: makefast-2.1.6.tar.gz
- Upload date:
- Size: 28.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cce5dec598cfefac59258460ab09c74b3bd11cb82746a2aeebd2b7d83143aa1e
|
|
| MD5 |
640bd68856d216e4b3a41928ff380160
|
|
| BLAKE2b-256 |
b9d8857ab1ed2d046ed94bf9329e80d734e6fcf72e61eb7dda336c1860b2c7fe
|
File details
Details for the file makefast-2.1.6-py3-none-any.whl.
File metadata
- Download URL: makefast-2.1.6-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8df34c4d447728b1327c679f0a8bcd8411963b2f12fb245a5915db5bc20ae19c
|
|
| MD5 |
b865aeb572e788d9588197fe5ca5ffb1
|
|
| BLAKE2b-256 |
9cff69f5d0ed1c0fc1b81c55ce04c31c6c5f685fcf3a5c60b3e8115bc27c0877
|