Skip to content

Commit 796de52

Browse files
committed
Minor re code reog
1 parent 572f076 commit 796de52

File tree

4 files changed

+44
-34
lines changed

4 files changed

+44
-34
lines changed

opensensor/collection_apis.py

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import datetime, timedelta, timezone
22
from typing import Generic, List, Optional, Type, TypeVar
33

4+
from bson import Binary
45
from fastapi import APIRouter, Depends, HTTPException, Path, Query, Response, status
56
from fastapi_pagination.default import Page as BasePage
67
from fastapi_pagination.default import Params as BaseParams
@@ -22,7 +23,6 @@
2223
from opensensor.db import get_open_sensor_db
2324
from opensensor.users import (
2425
User,
25-
_record_data_point_to_ts_collection,
2626
auth,
2727
device_id_is_allowed_for_user,
2828
get_api_keys_by_device_id,
@@ -46,6 +46,27 @@ class Page(BasePage[T], Generic[T]):
4646
router = APIRouter()
4747

4848

49+
def _record_data_point_to_ts_collection(
50+
collection,
51+
ts_column_name: str,
52+
device_metadata: DeviceMetadata,
53+
data_point,
54+
user: User = None,
55+
):
56+
metadata = device_metadata.dict()
57+
metadata.pop("api_key", None)
58+
if user:
59+
metadata["user_id"] = Binary.from_uuid(user.fief_user_id)
60+
if hasattr(data_point, "unit"):
61+
metadata["unit"] = data_point.unit
62+
data = {
63+
"timestamp": datetime.utcnow(),
64+
"metadata": metadata,
65+
ts_column_name: str(getattr(data_point, ts_column_name)),
66+
}
67+
collection.insert_one(data)
68+
69+
4970
@router.post("/rh/", response_model=Humidity)
5071
async def record_humidity(
5172
device_metadata: DeviceMetadata,
@@ -112,6 +133,17 @@ async def record_moisture_readings(
112133
return Response(status_code=status.HTTP_201_CREATED)
113134

114135

136+
@app.post("/pH/", response_model=PH)
137+
async def record_ph(
138+
device_metadata: DeviceMetadata,
139+
ph: PH,
140+
user: User = Depends(validate_device_metadata),
141+
):
142+
db = get_open_sensor_db()
143+
_record_data_point_to_ts_collection(db.pH, "pH", device_metadata, ph, user)
144+
return Response(status_code=status.HTTP_201_CREATED)
145+
146+
115147
def get_collection_name(response_model: Type[T]):
116148
if hasattr(response_model, "collection_name"):
117149
return response_model.collection_name()
@@ -246,17 +278,6 @@ async def historical_data_route(
246278
return historical_data_route
247279

248280

249-
@app.post("/pH/", response_model=PH)
250-
async def record_ph(
251-
device_metadata: DeviceMetadata,
252-
ph: PH,
253-
user: User = Depends(validate_device_metadata),
254-
):
255-
db = get_open_sensor_db()
256-
_record_data_point_to_ts_collection(db.pH, "pH", device_metadata, ph, user)
257-
return Response(status_code=status.HTTP_201_CREATED)
258-
259-
260281
router.add_api_route(
261282
"/temp/{device_id}",
262283
create_historical_data_route(Temperature),

opensensor/users.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import os
33
import secrets
44
from collections import defaultdict
5-
from datetime import datetime
65
from typing import Dict, List, Optional
76
from uuid import UUID
87

@@ -344,24 +343,3 @@ def validate_api_key(api_key: str, device_id: str, device_name: str) -> User:
344343

345344

346345
auth = oauth2_auth
347-
348-
349-
def _record_data_point_to_ts_collection(
350-
collection,
351-
ts_column_name: str,
352-
device_metadata: DeviceMetadata,
353-
data_point,
354-
user: User = None,
355-
):
356-
metadata = device_metadata.dict()
357-
metadata.pop("api_key", None)
358-
if user:
359-
metadata["user_id"] = Binary.from_uuid(user.fief_user_id)
360-
if hasattr(data_point, "unit"):
361-
metadata["unit"] = data_point.unit
362-
data = {
363-
"timestamp": datetime.utcnow(),
364-
"metadata": metadata,
365-
ts_column_name: str(getattr(data_point, ts_column_name)),
366-
}
367-
collection.insert_one(data)

tests/__init__.py

Whitespace-only changes.

tests/test_collection_apis.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
from fastapi.testclient import TestClient
3+
from main import app
4+
5+
client = TestClient(app)
6+
7+
8+
def test_read_root():
9+
response = client.get("/")
10+
assert response.status_code == 200
11+
assert response.json() == {"message": "Welcome to OpenSensor.io! Navigate to /docs for current Alpha API spec."}

0 commit comments

Comments
 (0)