Skip to content
This repository was archived by the owner on Feb 19, 2023. It is now read-only.

Commit 738d416

Browse files
committed
feat: add tests...add config...add v1 routes
1 parent 279d578 commit 738d416

File tree

12 files changed

+86
-9
lines changed

12 files changed

+86
-9
lines changed

.env_example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
ENV=dev
2+
PROJECT_NAME=
23

34
POSTGRES_DB=
45
POSTGRES_USER=
56
POSTGRES_PASSWORD=
67
POSTGRES_HOST=db
78

9+
NGINX_HOST=localhost
810
UPSTREAMS=/:backend:8000

.github/workflows/mian.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: lint and test
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
8+
jobs:
9+
linter:
10+
runs-on: ubuntu-18.04
11+
name: Check python linting
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v2
15+
- name: Start linter
16+
run: |
17+
docker run --rm -w="/code/backend" -v $(pwd):/code alpine/flake8:3.5.0 .

backend/requirements/base.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# api
22
fastapi==0.65.1
33
uvicorn==0.13.4
4+
requests==2.25.1
45

56
# database
67
databases[postgresql]==0.4.3
78
psycopg2-binary==2.8.6
8-
SQLAlchemy==1.4.15
9+
SQLAlchemy==1.3.24
910
asyncpg==0.23.0

backend/src/api/routes.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from fastapi import APIRouter
2+
3+
from src.api.v1 import health
4+
5+
6+
api_router = APIRouter()
7+
api_router.include_router(health.router)

backend/src/api/v1/__init__.py

Whitespace-only changes.
File renamed without changes.

backend/src/app.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
11
from fastapi import FastAPI
22

3-
from src.api import health
3+
from src.api import routes
4+
from src.config import settings
5+
from src.db import engine, database, metadata
46

57

8+
metadata.create_all(engine)
9+
610
app = FastAPI()
711

8-
app.include_router(health.router)
12+
13+
@app.on_event("startup")
14+
async def startup():
15+
await database.connect()
16+
17+
18+
@app.on_event("shutdown")
19+
async def shutdown():
20+
await database.disconnect()
21+
22+
23+
app.include_router(routes.api_router, prefix=settings.API_V1_STR)

backend/src/config.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import os
2+
import secrets
3+
from typing import List
4+
5+
from pydantic import AnyHttpUrl, BaseSettings
6+
7+
8+
class Settings(BaseSettings):
9+
API_V1_STR: str = "/api/v1"
10+
SECRET_KEY: str = secrets.token_urlsafe(32)
11+
# 60 minutes * 24 hours * 8 days = 8 days
12+
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8
13+
SERVER_NAME: str = os.getenv("NGINX_HOST", "localhost")
14+
BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = []
15+
16+
PROJECT_NAME: str = os.getenv("PROJECT_NAME", "")
17+
18+
POSTGRES_DB: str = os.getenv("POSTGRES_DB", "")
19+
POSTGRES_USER: str = os.getenv("POSTGRES_USER", "")
20+
POSTGRES_PASSWORD: str = os.getenv("POSTGRES_PASSWORD", "")
21+
POSTGRES_DB: str = os.getenv("POSTGRES_DB", "db")
22+
POSTGRES_URL: str = os.getenv("POSTGRES_URL", "")
23+
24+
25+
settings = Settings()

backend/src/db.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
import os
2-
31
from databases import Database
42
from sqlalchemy import create_engine, MetaData
53

4+
from src.config import settings
65

7-
DATABASE_URL = os.getenv("DATABASE_URL")
86

97
# SQLAlchemy
10-
engine = create_engine(DATABASE_URL)
8+
engine = create_engine(settings.POSTGRES_URL, pool_size=3, max_overflow=0)
119
metadata = MetaData()
1210

1311
# databases query builder
14-
database = Database(DATABASE_URL)
12+
database = Database(settings.POSTGRES_URL)

backend/src/tests/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)