Skip to content

Commit

Permalink
Add api endpoint to database
Browse files Browse the repository at this point in the history
  • Loading branch information
anetteu authored and vetlek committed Jan 21, 2022
1 parent 5a544cd commit e3411ba
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 127 deletions.
Empty file added backend/src/flotilla/api/api.py
Empty file.
12 changes: 12 additions & 0 deletions backend/src/flotilla/database/db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///:memory:"

engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()
224 changes: 109 additions & 115 deletions backend/src/flotilla/database/mock_database/mock_database.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import datetime

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from flotilla.database.models import (
Base,
Capability,
Entry,
EntryStatus,
Expand All @@ -16,115 +12,113 @@
RobotStatus,
)

# engine = create_engine("sqlite:///mock.db", echo=True) # Save to file
engine = create_engine("sqlite:///:memory:", echo=True)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

robot_1 = Robot(
name="Harald",
model="King",
serial_number="VI",
logs="",
status=RobotStatus.available,
)

robot_2 = Robot(
name="Harold",
model="King",
serial_number="VII",
logs="",
status=RobotStatus.offline,
)

session.add_all([robot_1, robot_2])
session.commit()

report_1 = Report(
robot_id=robot_1.id,
isar_mission_id="isar_mission_id",
echo_mission_id=1,
log="",
status=ReportStatus.in_progress,
)
report_2 = Report(
robot_id=robot_2.id,
isar_mission_id="isar_mission_id",
echo_mission_id=1,
log="",
status=ReportStatus.completed,
)

session.add(report_1, report_2)
session.commit()

entry_1 = Entry(
report_id=report_1.id,
tag_id="tag_id",
status=EntryStatus.completed,
inspection_type=InspectionType.image,
time=datetime.datetime.now(tz=datetime.timezone.utc),
file_location="",
)

entry_2 = Entry(
report_id=report_2.id,
tag_id="tag_id",
status=EntryStatus.failed,
inspection_type=InspectionType.thermal_image,
time=datetime.datetime.now(tz=datetime.timezone.utc),
file_location="",
)

entry_3 = Entry(
report_id=report_2.id,
tag_id="tag_id",
status=EntryStatus.completed,
inspection_type=InspectionType.image,
time=datetime.datetime.now(tz=datetime.timezone.utc),
file_location="",
)

event_1 = Event(
robot_id=robot_1.id,
echo_mission_id=287,
report_id=report_1.id,
estimated_duration=datetime.timedelta(hours=1),
)

event_2 = Event(
robot_id=robot_2.id,
echo_mission_id=287,
report_id=report_2.id,
estimated_duration=datetime.timedelta(hours=2),
)

capability_1 = Capability(
robot_id=robot_2.id,
capability=InspectionType.image,
)

capability_2 = Capability(
robot_id=robot_2.id,
capability=InspectionType.thermal_image,
)

capability_3 = Capability(
robot_id=robot_1.id,
capability=InspectionType.image,
)

session.add_all(
[
entry_1,
entry_2,
entry_3,
event_1,
event_2,
capability_1,
capability_2,
capability_3,
]
)
session.commit()
def populate_mock_db(session, engine, base) -> None:
base.metadata.create_all(engine)

robot_1 = Robot(
name="Harald",
model="King",
serial_number="VI",
logs="",
status=RobotStatus.available,
)

robot_2 = Robot(
name="Harold",
model="King",
serial_number="VII",
logs="",
status=RobotStatus.offline,
)

session.add_all([robot_1, robot_2])
session.commit()

report_1 = Report(
robot_id=robot_1.id,
isar_mission_id="isar_mission_id",
echo_mission_id=1,
log="",
status=ReportStatus.in_progress,
)
report_2 = Report(
robot_id=robot_2.id,
isar_mission_id="isar_mission_id",
echo_mission_id=1,
log="",
status=ReportStatus.completed,
)

session.add(report_1, report_2)
session.commit()

entry_1 = Entry(
report_id=report_1.id,
tag_id="tag_id",
status=EntryStatus.completed,
inspection_type=InspectionType.image,
time=datetime.datetime.now(tz=datetime.timezone.utc),
file_location="",
)

entry_2 = Entry(
report_id=report_2.id,
tag_id="tag_id",
status=EntryStatus.failed,
inspection_type=InspectionType.thermal_image,
time=datetime.datetime.now(tz=datetime.timezone.utc),
file_location="",
)

entry_3 = Entry(
report_id=report_2.id,
tag_id="tag_id",
status=EntryStatus.completed,
inspection_type=InspectionType.image,
time=datetime.datetime.now(tz=datetime.timezone.utc),
file_location="",
)

event_1 = Event(
robot_id=robot_1.id,
echo_mission_id=287,
report_id=report_1.id,
estimated_duration=datetime.timedelta(hours=1),
)

event_2 = Event(
robot_id=robot_2.id,
echo_mission_id=287,
report_id=report_2.id,
estimated_duration=datetime.timedelta(hours=2),
)

capability_1 = Capability(
robot_id=robot_2.id,
capability=InspectionType.image,
)

capability_2 = Capability(
robot_id=robot_2.id,
capability=InspectionType.thermal_image,
)

capability_3 = Capability(
robot_id=robot_1.id,
capability=InspectionType.image,
)

session.add_all(
[
entry_1,
entry_2,
entry_3,
event_1,
event_2,
capability_1,
capability_2,
capability_3,
]
)
session.commit()
14 changes: 2 additions & 12 deletions backend/src/flotilla/database/models.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,10 @@
import datetime
import enum

from sqlalchemy import (
Column,
DateTime,
Enum,
ForeignKey,
ForeignKeyConstraint,
Integer,
Interval,
String,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, DateTime, Enum, ForeignKey, Integer, Interval, String
from sqlalchemy.orm import backref, relationship

Base = declarative_base()
from flotilla.database.db import Base


class RobotStatus(enum.Enum):
Expand Down
12 changes: 12 additions & 0 deletions backend/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import pytest
from sqlalchemy.orm import Session

from flotilla.database.db import Base, SessionLocal, engine
from flotilla.database.mock_database.mock_database import populate_mock_db

mock_session: Session = SessionLocal()
populate_mock_db(session=mock_session,engine=engine,base=Base)

@pytest.fixture()
def session() -> Session:
return mock_session
5 changes: 5 additions & 0 deletions backend/tests/test_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from flotilla.database.models import Robot


def test_mock_db(session):
assert len(session.query(Robot.name).all()) == 2

0 comments on commit e3411ba

Please sign in to comment.