Add location database ORM

Add API routes
This commit is contained in:
2020-01-20 19:05:38 +03:00
parent 602196be13
commit 8dbcb420b1
6 changed files with 290 additions and 2 deletions
+6
View File
@@ -0,0 +1,6 @@
import uvicorn
from app.app import app
if __name__ == '__main__':
uvicorn.run(app)
+65
View File
@@ -0,0 +1,65 @@
import sqlite3
from typing import List
from fastapi import APIRouter
from fastapi.params import Depends
from core import diyanetdb, diyanet
from core.diyanet import PrayerTimes
from core.diyanetdb import Location
api = APIRouter()
def get_connection():
with diyanetdb.get_connection() as conn:
yield conn
@api.get('/diyanet/countries', response_model=List[str])
async def list_countries(
conn: sqlite3.Connection = Depends(get_connection)
):
return diyanetdb.find_countries(conn)
@api.get('/diyanet/countries/{country}/cities', response_model=List[str])
async def list_cities_in_country(
country: str,
conn: sqlite3.Connection = Depends(get_connection)
):
cities = diyanetdb.find_cities(conn, country=country)
return cities
@api.get('/diyanet/location/{country}', response_model=List[Location])
async def list_locations_for_country(
country: str,
conn: sqlite3.Connection = Depends(get_connection)
):
items = diyanetdb.find_locations(conn, country=country)
return items
@api.get('/diyanet/location/{country}/{city}', response_model=List[Location])
async def list_locations_for_city(
country: str,
city: str,
conn: sqlite3.Connection = Depends(get_connection)
):
items = diyanetdb.find_locations(conn, country=country, city=city)
return items
@api.get('/diyanet/prayertimes', response_model=List[PrayerTimes])
async def get_prayer_times(location_id: int):
times = diyanet.get_prayer_times(location_id)
return times
@api.get('/diyanet/search', response_model=List[PrayerTimes])
async def search_location(
q: str,
conn: sqlite3.Connection = Depends(get_connection)):
locations = diyanetdb.find_location_by_name(conn, q)
return locations
+6
View File
@@ -0,0 +1,6 @@
from fastapi import FastAPI
from app.api import api as api_router
app = FastAPI()
app.include_router(api_router, prefix='/api')
+4
View File
@@ -0,0 +1,4 @@
from os import getenv
from pathlib import Path
DB_PATH = Path(getenv('DB_PATH', Path(__file__).parent.parent / 'diyanetdb.sqlite3'))