1
- main_template = """from fastapi import FastAPI
2
- from fastapi.middleware.cors import CORSMiddleware
3
-
4
- from {project_name}.settings import settings
5
- from {project_name}.models.database import database
6
-
7
- app = FastAPI(title=settings.PROJECT_NAME)
8
-
9
- if settings.BACKEND_CORS_ORIGINS:
10
- app.add_middleware(
11
- CORSMiddleware,
12
- allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
13
- allow_methods=["*"],
14
- allow_headers=["*"],
15
- )
16
-
17
-
18
- @app.on_event("startup")
19
- async def connect_database():
20
- await database.connect()
21
-
1
+ database_options_template = """PostgreSQL - SQLite - MySQL [0]
2
+ Tortoise [1]
3
+ MongoDB [2]
4
+ Create without Database [9]
22
5
23
- @app.on_event("shutdown")
24
- async def disconnect_database():
25
- await database.disconnect()
26
6
"""
27
7
28
8
schema_template = """# For more information check Pydantic documentation = https://pydantic-docs.helpmanual.io/usage/models/
@@ -41,23 +21,6 @@ class Model(BaseModel):
41
21
pass
42
22
"""
43
23
44
- database_template = """import sqlalchemy
45
- from {project_name}.settings import settings
46
- import databases
47
-
48
- database = databases.Database(settings.SQLALCHEMY_DATABASE_URL)
49
- metadata = sqlalchemy.MetaData()
50
-
51
- # Put your database models here | Below
52
-
53
- # FastAPI documentation for databases: https://fastapi.tiangolo.com/advanced/async-sql-databases/
54
-
55
- # Put your database models here | Above
56
-
57
-
58
- engine = sqlalchemy.create_engine(settings.SQLALCHEMY_DATABASE_URL)
59
- metadata.create_all(engine)
60
- """
61
24
62
25
settings_template = """from typing import Any, Dict, List, Optional, Union
63
26
@@ -82,20 +45,16 @@ def assemble_cors_origins(cls, v: Union[str, List[str]]) -> Union[List[str], str
82
45
raise ValueError(v)
83
46
84
47
# Database Settings
85
- DATABASE_SERVER: Optional[str] = ""
86
- DATABASE_USER: Optional[str] = ""
87
- DATABASE_PASSWORD: Optional[str] = ""
88
- DATABASE_PORT: Optional[str] = ""
89
- DATABASE_NAME: Optional[str] = ""
90
- DATABASE_HOST: Optional[str] = ""
91
-
92
- # SQLALCHEMY_DATABASE_URL: Optional[
93
- # str
94
- # ] = f"{DATABASE_SERVER}://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}"
95
-
48
+ DB_SERVER: Optional[str] = ""
49
+ DB_USER: Optional[str] = ""
50
+ DB_PASSWORD: Optional[str] = ""
51
+ DB_PORT: Optional[str] = ""
52
+ DB_NAME: Optional[str] = ""
53
+ DB_PORT: Optional[str] = ""
54
+
55
+ # DATABASE_URL: str = f"{DB_SERVER}://{DB_USER}:{DB_PASSWORD}@{DB_PORT}:{DB_PORT}/{DB_NAME}"
96
56
97
- # SQLALCHEMY_DATABASE_URL = "postgresql://user:passowrd@localhost:5432/database_name"
98
- SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
57
+ DATABASE_URL = "sqlite:///./test.db"
99
58
100
59
101
60
@@ -161,3 +120,183 @@ def test_read_items():
161
120
assert response.status_code == 200
162
121
assert response.json() == {"name": "Fighters"}
163
122
"""
123
+
124
+ requirements_template = """fastapi==0.61.0
125
+ uvicorn==0.11.8
126
+ """
127
+
128
+
129
+ # TORTOISE Main | Database template
130
+
131
+ tortoise_main_template = """from fastapi import FastAPI
132
+ from fastapi.middleware.cors import CORSMiddleware
133
+
134
+ from {project_name}.{project_name}.models.database import Example
135
+ from tortoise.contrib.fastapi import HTTPNotFoundError, register_tortoise
136
+
137
+
138
+ from {project_name}.{project_name}.settings import settings
139
+
140
+ app = FastAPI(title=settings.PROJECT_NAME)
141
+
142
+
143
+ if settings.BACKEND_CORS_ORIGINS:
144
+ app.add_middleware(
145
+ CORSMiddleware,
146
+ allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
147
+ allow_methods=["*"],
148
+ allow_headers=["*"],
149
+ )
150
+
151
+
152
+
153
+ register_tortoise(
154
+ app,
155
+ db_url=settings.DATABASE_URL,
156
+ modules={"models": ["{project_name}.{project_name}.models"]},
157
+ generate_schemas=True,
158
+ add_exception_handlers=True,
159
+ )
160
+ """
161
+
162
+ tortoise_database_template = """from tortoise import fields, models
163
+ from tortoise.contrib.pydantic import pydantic_model_creator
164
+
165
+
166
+ class Example(models.Model):
167
+
168
+ id = fields.IntField(pk=True)
169
+ created_at = fields.DatetimeField(auto_now_add=True)
170
+ modified_at = fields.DatetimeField(auto_now=True)
171
+
172
+ class PydanticMeta:
173
+ pass
174
+
175
+
176
+ Example = pydantic_model_creator(Example, name="Example")
177
+ """
178
+
179
+
180
+ # Postgresql, SQLite, MySQL Main | Database
181
+
182
+ empty_main_template = """from fastapi import FastAPI
183
+ from fastapi.middleware.cors import CORSMiddleware
184
+
185
+ from {project_name}.settings import settings
186
+
187
+ if settings.BACKEND_CORS_ORIGINS:
188
+ app.add_middleware(
189
+ CORSMiddleware,
190
+ allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
191
+ allow_methods=["*"],
192
+ allow_headers=["*"],
193
+ )
194
+
195
+
196
+ """
197
+
198
+
199
+ async_sql_main_template = """from fastapi import FastAPI
200
+ from fastapi.middleware.cors import CORSMiddleware
201
+
202
+ from {project_name}.{project_name}.settings import settings
203
+ from {project_name}.{project_name}.models.database import database
204
+
205
+ app = FastAPI(title=settings.PROJECT_NAME)
206
+
207
+ if settings.BACKEND_CORS_ORIGINS:
208
+ app.add_middleware(
209
+ CORSMiddleware,
210
+ allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
211
+ allow_methods=["*"],
212
+ allow_headers=["*"],
213
+ )
214
+
215
+
216
+ @app.on_event("startup")
217
+ async def connect_database():
218
+ await database.connect()
219
+
220
+
221
+ @app.on_event("shutdown")
222
+ async def disconnect_database():
223
+ await database.disconnect()
224
+ """
225
+
226
+ async_sql_database_template = """import sqlalchemy
227
+ from {project_name}.{project_name}.settings import settings
228
+ import databases
229
+
230
+ database = databases.Database(settings.DATABASE_URL)
231
+ metadata = sqlalchemy.MetaData()
232
+
233
+ # Put your database models here | Below
234
+
235
+ # FastAPI documentation for databases: https://fastapi.tiangolo.com/advanced/async-sql-databases/
236
+
237
+ # Put your database models here | Above
238
+
239
+
240
+ engine = sqlalchemy.create_engine(settings.DATABASE_URL)
241
+ metadata.create_all(engine)
242
+ """
243
+
244
+
245
+ ### MONGODB
246
+ mongo_main_template = """from fastapi import FastAPI
247
+ from fastapi.middleware.cors import CORSMiddleware
248
+
249
+ from {project_name}.{project_name}.settings import settings
250
+ from {project_name}.{project_name}.models.utils import connect_to_mongo, close_mongo_connection
251
+
252
+ app = FastAPI()
253
+
254
+ if settings.BACKEND_CORS_ORIGINS:
255
+ app.add_middleware(
256
+ CORSMiddleware,
257
+ allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
258
+ allow_methods=["*"],
259
+ allow_headers=["*"],
260
+ )
261
+
262
+ app.add_event_handler("startup", connect_to_mongo)
263
+ app.add_event_handler("shutdown", close_mongo_connection)
264
+
265
+
266
+ """
267
+
268
+
269
+ mongo_database_template = """from motor.motor_asyncio import AsyncIOMotorClient
270
+
271
+
272
+ class DataBase:
273
+ client: AsyncIOMotorClient = None
274
+
275
+
276
+ db = DataBase()
277
+
278
+
279
+ async def get_database() -> AsyncIOMotorClient:
280
+ return db.client
281
+ """
282
+
283
+ mongo_utils_template = """import logging
284
+
285
+ from motor.motor_asyncio import AsyncIOMotorClient
286
+ from {project_name}.{project_name}.models.database import db
287
+
288
+ logger = logging.getLogger(__name__)
289
+
290
+
291
+ async def connect_to_mongo():
292
+ db.client = AsyncIOMotorClient(str("localhost:27017"),
293
+ maxPoolSize=10,
294
+ minPoolSize=10)
295
+
296
+ logger.info(f"Connecting to mongoDB")
297
+
298
+
299
+ async def close_mongo_connection():
300
+ db.client.close()
301
+ logger.info(f"Closing to mongoDB")
302
+ """
0 commit comments