init commit
This commit is contained in:
44
services/emergency_service/models.py
Normal file
44
services/emergency_service/models.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from sqlalchemy import Column, String, Integer, Float, DateTime, Text, ForeignKey, Boolean
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from shared.database import BaseModel
|
||||
import uuid
|
||||
|
||||
|
||||
class EmergencyAlert(BaseModel):
|
||||
__tablename__ = "emergency_alerts"
|
||||
|
||||
uuid = Column(UUID(as_uuid=True), default=uuid.uuid4, unique=True, index=True)
|
||||
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
|
||||
|
||||
# Location at time of alert
|
||||
latitude = Column(Float, nullable=False)
|
||||
longitude = Column(Float, nullable=False)
|
||||
address = Column(String(500))
|
||||
|
||||
# Alert details
|
||||
alert_type = Column(String(50), default="general") # general, medical, violence, etc.
|
||||
message = Column(Text)
|
||||
is_resolved = Column(Boolean, default=False)
|
||||
resolved_at = Column(DateTime(timezone=True))
|
||||
resolved_by = Column(Integer, ForeignKey("users.id"))
|
||||
|
||||
# Response tracking
|
||||
notified_users_count = Column(Integer, default=0)
|
||||
responded_users_count = Column(Integer, default=0)
|
||||
|
||||
def __repr__(self):
|
||||
return f"<EmergencyAlert {self.uuid}>"
|
||||
|
||||
|
||||
class EmergencyResponse(BaseModel):
|
||||
__tablename__ = "emergency_responses"
|
||||
|
||||
alert_id = Column(Integer, ForeignKey("emergency_alerts.id"), nullable=False, index=True)
|
||||
responder_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
|
||||
|
||||
response_type = Column(String(50)) # help_on_way, contacted_authorities, etc.
|
||||
message = Column(Text)
|
||||
eta_minutes = Column(Integer) # Estimated time of arrival
|
||||
|
||||
def __repr__(self):
|
||||
return f"<EmergencyResponse {self.id}>"
|
||||
Reference in New Issue
Block a user