Repository navigation
Expand file tree
/
Copy pathdatabase.py
More file actions
51 lines (36 loc) · 1.67 KB
/
Copy pathdatabase.py
File metadata and controls
51 lines (36 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from sqlalchemy import create_engine, Column, Integer, String, Text, DateTime, ForeignKey
from sqlalchemy.orm import DeclarativeBase, sessionmaker, relationship
from datetime import datetime, timezone
DATABASE_URL = "sqlite:///./bikeparkbot.db"
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
class Base(DeclarativeBase):
pass
class Bike(Base):
__tablename__ = "bikes"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100), nullable=False)
description = Column(Text, nullable=True)
owner_name = Column(String(100), nullable=False)
owner_telegram_id = Column(String(50), nullable=False)
owner_username = Column(String(100), nullable=True)
frame_number = Column(String(100), nullable=True)
created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc))
updated_at = Column(DateTime, default=lambda: datetime.now(timezone.utc),
onupdate=lambda: datetime.now(timezone.utc))
photos = relationship("BikePhoto", back_populates="bike", cascade="all, delete-orphan")
class BikePhoto(Base):
__tablename__ = "bike_photos"
id = Column(Integer, primary_key=True, index=True)
bike_id = Column(Integer, ForeignKey("bikes.id"), nullable=False)
filename = Column(String(255), nullable=False)
created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc))
bike = relationship("Bike", back_populates="photos")
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
def create_tables():
Base.metadata.create_all(bind=engine)