From 6864b89b340821a6acd2f048391d609d7468a31e Mon Sep 17 00:00:00 2001 From: steev Date: Thu, 2 Jan 2025 23:06:39 +0100 Subject: [PATCH] feat: :sparkles: added database model for geo objects --- class/model/geoObjects.py | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/class/model/geoObjects.py b/class/model/geoObjects.py index d5c1df0..45406b1 100644 --- a/class/model/geoObjects.py +++ b/class/model/geoObjects.py @@ -1,5 +1,7 @@ +from sqlalchemy import Column, Date, DateTime, Float, ForeignKey, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.pool import NullPool +from sqlalchemy.orm import relationship Base = declarative_base() @@ -12,16 +14,45 @@ def createTables(engine): class Track(Base): __tablename__ = 'track' + id = Column(Integer, primary_key=True, autoincrement=True) + trackName = Column(String(200), nullable=True) + vehicle = Column(Integer, ForeignKey('vehicle.id'), nullable=False) + driver = Column(Integer, ForeignKey('driver.id'), nullable=False) + date = Column(Date, nullable=True) + distance = Column(Float, nullable=False, default=0) + speed = Column(Float, nullable=False, default=0) + start = Column(DateTime, nullable=False) + end = Column(DateTime, nullable=False) + + waypoints = relationship('Waypoint', backref='track', lazy=True) + driver = relationship('Driver', back_populates='track') + vehicle = relationship('Vehicle', back_populates='track') + pass -class Coordinate(Base): - __tablename__ = 'coordinate' +class Waypoint(Base): + __tablename__ = 'waypoint' + id = Column(Integer, primary_key=True, autoincrement=True) + lat = Column(Float, nullable=False) + lon = Column(Float, nullable=False) + ele = Column(Float, nullable=False) + speed = Column(Float, nullable=True) + time = Column(DateTime, nullable=True) + track = Column(Integer, ForeignKey('track.id'), nullable=False) pass class Driver(Base): __tablename__ = 'driver' + id = Column(Integer, primary_key=True, autoincrement=True) + name = Column(String, nullable=False) + + track = relationship("Track", back_populates='driver') pass class Vehicle(Base): __tablename__ = 'vehicle' + id = Column(Integer, primary_key=True, autoincrement=True) + name = Column(String, nullable=False) + + track = relationship('Track', back_populates='vehicle') pass \ No newline at end of file