Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
fastapi-crud-code-generator
Advanced tools
FastAPI CRUD Template Generator is a tool that helps developers quickly scaffold FastAPI projects with CRUD operations for their SQLAlchemy databases. It can provide a starting point for your project and can save time and effort by providing pre-written code of the CRUD operations and validation model, and a pre-defined project structureIt. The generated code can be customized to add business logic and extend the functionality of the FastAPI project. The tool supports the following APIs:
- Get one
- Get many
- Insert one
- Insert many
- Update one
- Update many
- Patch one
- Patch many
- Delete one
- Delete many
FastAPI CRUD Generator is the tool for building efficient and scalable APIs with FastAPI and SQLAlchemy. Try it now and start building your next great project.
To get started with FastAPI CRUD Template Generator, you will need to install the package using pip:
pip install fastapi-crud-code-generator
Next, you will need to prepare your SQLAlchemy schema by defining your database tables as declarative classes. You can use the sqlacodegen tool to automatically generate these classes from your database.
from sqlalchemy import *
from sqlalchemy.orm import declarative_base
Base = declarative_base()
metadata = Base.metadata
class SampleTable(Base):
__tablename__ = 'test_build_myself_memory'
__table_args__ = (
UniqueConstraint('primary_key', 'int4_value', 'float4_value'),
)
primary_key = Column(Integer, primary_key=True, autoincrement=True)
bool_value = Column(Boolean, nullable=False, default=False)
bytea_value = Column(LargeBinary)
char_value = Column(CHAR(10, collation='NOCASE'))
date_value = Column(Date)
float4_value = Column(Float, nullable=False)
float8_value = Column(Float(53), nullable=False, default=10.10)
int2_value = Column(SmallInteger, nullable=False)
int4_value = Column(Integer, nullable=False)
int8_value = Column(BigInteger, default=99)
text_value = Column(Text)
varchar_value = Column(String)
class SampleTableTwo(Base):
__tablename__ = 'test_build_myself_memory_two'
primary_key = Column(Integer, primary_key=True, autoincrement=True)
bool_value = Column(Boolean, nullable=False, default=False)
bytea_value = Column(LargeBinary)
Once you have your SQLAlchemy schema defined, you can use the crud_router_builder
method to generate CRUD router code for your API. This method takes the declarative class definitions as input and generates code that defines the endpoints and validation models for each CRUD operation.
Here is an example of how to use the crud_router_builder
method to generate CRUD router code:
from fastapi_quickcrud_codegen.db_model import DbModel
from fastapi_quickcrud_codegen.misc.type import CrudMethods
from fastapi_quickcrud_codegen import crud_router_builder
model_list = [DbModel(db_model=SampleTable, prefix="/my_first_api", tags=["sample api"],
exclude_columns=['bytea_value']),
DbModel(db_model=SampleTableTwo, prefix="/my_second_api", tags=["sample api"],
exclude_columns=['bytea_value'],crud_methods=[CrudMethods.FIND_ONE])]
crud_router_builder(
db_model_list=model_list,
# is_async=True,
# database_url="sqlite+aiosqlite://",
is_async=False,
database_url="sqlite://"
)
crud_router_builder args
db_model_list [Required[List[DbModel]]]
Model list of dict for code generate
List[]
DbModel
[Required[DeclarativeMeta]]
[Required[str]]
prefix for Fastapi's end point
[Required[List[str]]]
list of tag for Fastapi's end point
[Optional[List[str]]]
set the columns that not to be operated but the columns should nullable or set the default value)
[Opional[List[CrudMethods]]]
- Create the following apis for that model, but default: [CrudMethods.FIND_MANY, CrudMethods.FIND_ONE, CrudMethods.CREATE_MANY, CrudMethods.PATCH_ONE, CrudMethods.PATCH_MANY, CrudMethods.PATCH_ONE, CrudMethods.UPDATE_MANY, CrudMethods.UPDATE_ONE, CrudMethods.DELETE_MANY, CrudMethods.DELETE_ONE]
- CrudMethods.FIND_ONE
- CrudMethods.FIND_MANY
- CrudMethods.UPDATE_ONE
- CrudMethods.UPDATE_MANY
- CrudMethods.PATCH_ONE
- CrudMethods.PATCH_MANY
- CrudMethods.CREATE_ONE
- CrudMethods.CREATE_MANY
- CrudMethods.DELETE_ONE
- CrudMethods.DELETE_MANY
is_async [Required]
True for async; False for sync
database_url [Optional (str)]
A database URL. The URL is passed directly to SQLAlchemy's create_engine() method so please refer to SQLAlchemy's documentation for instructions on how to construct a proper URL.
The model generation part and api router part refer to my another project; The code generation part is using Jinja
It will be super excited if you have any idea with api router/ model template. then you can follow the step as below to try to contribute.
fastapi-crud-project-generator/src/fastapi_quickcrud_codegen/model/template
fastapi_quickcrud_codegen.utils.schema_builder.ApiParameterSchemaBuilder
fastapi_quickcrud_codegen/model/model_builder.py
fastapi_quickcrud_codegen.utils.sqlalchemy_to_pydantic.sqlalchemy_to_pydantic
, fastapi_quickcrud_codegen.misc.type.CrudMethods
and fastapi_quickcrud_codegen.misc.crud_model.CRUDModel
to let project supports your apisrc/fastapi_quickcrud_codegen/model/template/route
fastapi_quickcrud_codegen/model/crud_builder.py
src/fastapi_quickcrud_codegen/crud_generator.py
- Support foreign tree in find api
- Support foreign tree in insert api
- Support foreign tree in update api
- Support foreign tree in delete api
- Support Sqlalchemy Table type model
FAQs
FastaAPI's CRUD project generator for SQLALchemy.
We found that fastapi-crud-code-generator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.