@@ -29,7 +29,8 @@ def createAdminAcc(): | |||||
LastName="Turgunov", | LastName="Turgunov", | ||||
ContactNumber="+77071234567", | ContactNumber="+77071234567", | ||||
Role="Admin", | Role="Admin", | ||||
BirthDate="2000-01-01T00:00:00+06:00", | |||||
GovernmentId="123456789", | |||||
Address="Nazarbayev University", | |||||
) | ) | ||||
if db.query(User).filter(User.Email == user.Email).first(): | if db.query(User).filter(User.Email == user.Email).first(): | ||||
return False | return False | ||||
@@ -1,5 +1,5 @@ | |||||
# PostgreSQL table model for users | # PostgreSQL table model for users | ||||
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey | |||||
from sqlalchemy import Column, Integer, String, ForeignKey | |||||
from sqlalchemy.orm import relationship | from sqlalchemy.orm import relationship | ||||
from db.base import Base | from db.base import Base | ||||
@@ -9,7 +9,8 @@ class User(Base): | |||||
Name = Column(String, nullable=False) | Name = Column(String, nullable=False) | ||||
MiddleName = Column(String, nullable=True) | MiddleName = Column(String, nullable=True) | ||||
LastName = Column(String, nullable=False) | LastName = Column(String, nullable=False) | ||||
BirthDate = Column(DateTime, nullable=False) | |||||
GovernmentId = Column(String, nullable=False) | |||||
Address = Column(String, nullable=False) | |||||
ContactNumber = Column(String, nullable=False) | ContactNumber = Column(String, nullable=False) | ||||
Email = Column(String, nullable=False) | Email = Column(String, nullable=False) | ||||
Role = Column(String, nullable=False) | Role = Column(String, nullable=False) | ||||
@@ -14,10 +14,11 @@ class Vehicle(Base): | |||||
Model = Column(String, nullable=False) | Model = Column(String, nullable=False) | ||||
Year = Column(Integer, nullable=False) | Year = Column(Integer, nullable=False) | ||||
LicensePlate = Column(String, nullable=False) | LicensePlate = Column(String, nullable=False) | ||||
Type = Column(String, nullable=False) | |||||
CurrentLocation = Column(ARRAY(String), nullable=True) | CurrentLocation = Column(ARRAY(String), nullable=True) | ||||
Fuel = Column(Integer, nullable=False) | Fuel = Column(Integer, nullable=False) | ||||
Mileage = Column(Integer, nullable=False) | Mileage = Column(Integer, nullable=False) | ||||
Status = Column(String, nullable=False) | Status = Column(String, nullable=False) | ||||
Capacity = Column(Integer, nullable=False) | Capacity = Column(Integer, nullable=False) | ||||
MaintenanceNotes = Column(ARRAY(String), nullable=True) | |||||
DriverHistory = Column(ARRAY(Integer), nullable=True) | |||||
driver = relationship("User", back_populates="vehicle") | driver = relationship("User", back_populates="vehicle") |
@@ -12,7 +12,8 @@ def create_new_user(user: UserCreate, db: Session): | |||||
Name=user.Name, | Name=user.Name, | ||||
MiddleName=user.MiddleName, | MiddleName=user.MiddleName, | ||||
LastName=user.LastName, | LastName=user.LastName, | ||||
BirthDate=user.BirthDate, | |||||
GovernmentId=user.GovernmentId, | |||||
Address=user.Address, | |||||
ContactNumber=user.ContactNumber, | ContactNumber=user.ContactNumber, | ||||
Role=user.Role, | Role=user.Role, | ||||
HashedPassword=Hasher.get_password_hash(user.Password), | HashedPassword=Hasher.get_password_hash(user.Password), | ||||
@@ -78,7 +78,8 @@ def replace_vehicle_data(id: int, vehicle: UpdateVehicle, db: Session): | |||||
vehicle_object.CurrentLocation = vehicle.CurrentLocation | vehicle_object.CurrentLocation = vehicle.CurrentLocation | ||||
vehicle_object.Fuel = vehicle.Fuel | vehicle_object.Fuel = vehicle.Fuel | ||||
vehicle_object.LicensePlate = vehicle.LicensePlate | vehicle_object.LicensePlate = vehicle.LicensePlate | ||||
vehicle_object.MaintenanceNotes = vehicle.MaintenanceNotes | |||||
vehicle_object.DriverHistory = vehicle.DriverHistory | |||||
vehicle_object.Type = vehicle.Type | |||||
vehicle_object.Mileage = vehicle.Mileage | vehicle_object.Mileage = vehicle.Mileage | ||||
vehicle_object.Model = vehicle.Model | vehicle_object.Model = vehicle.Model | ||||
vehicle_object.Status = vehicle.Status | vehicle_object.Status = vehicle.Status | ||||
@@ -1,6 +1,5 @@ | |||||
# Purpose: User schema for pydantic (validation, inside-api usage) | # Purpose: User schema for pydantic (validation, inside-api usage) | ||||
from datetime import datetime | |||||
from pydantic import BaseModel, EmailStr, Field | from pydantic import BaseModel, EmailStr, Field | ||||
@@ -11,7 +10,8 @@ class UserCreate(BaseModel): | |||||
MiddleName: str = Field(None) | MiddleName: str = Field(None) | ||||
LastName: str = Field(..., min_length=3, max_length=50) | LastName: str = Field(..., min_length=3, max_length=50) | ||||
ContactNumber: str = Field(..., min_length=12, max_length=12) | ContactNumber: str = Field(..., min_length=12, max_length=12) | ||||
BirthDate: datetime = Field(...) | |||||
GovernmentId: str = Field(...) | |||||
Address: str = Field(...) | |||||
Email: EmailStr = Field(...) | Email: EmailStr = Field(...) | ||||
Role: str = Field(..., min_length=3, max_length=50) | Role: str = Field(..., min_length=3, max_length=50) | ||||
@@ -22,7 +22,8 @@ class ShowUser(BaseModel): | |||||
MiddleName: str | None | MiddleName: str | None | ||||
LastName: str | LastName: str | ||||
ContactNumber: str | ContactNumber: str | ||||
BirthDate: datetime | |||||
GovernmentId: str | |||||
Address: str | |||||
Email: EmailStr | Email: EmailStr | ||||
Role: str | Role: str | ||||
AssignedVehicle: int | None | AssignedVehicle: int | None | ||||
@@ -18,23 +18,15 @@ class OutputVehicle(BaseModel): | |||||
Mileage: int | Mileage: int | ||||
CurrentLocation: Optional[list[str]] = None | CurrentLocation: Optional[list[str]] = None | ||||
Fuel: Optional[int] = 0 | Fuel: Optional[int] = 0 | ||||
MaintenanceNotes: Optional[list[str]] = None | |||||
Type: str | |||||
DriverHistory: Optional[list[int]] = None | |||||
AssignedDriver: Optional[int] = None | AssignedDriver: Optional[int] = None | ||||
Capacity: int | Capacity: int | ||||
Status: str | Status: str | ||||
class UpdateVehicle(BaseModel): | |||||
Model: str | |||||
Year: int | |||||
LicensePlate: str | |||||
Capacity: int | |||||
Mileage: int | |||||
Status: str | |||||
CurrentLocation: Optional[list[str]] = None | |||||
Fuel: Optional[int] = 0 | |||||
MaintenanceNotes: Optional[list[str]] = None | |||||
AssignedDriver: Optional[int] = None | |||||
class UpdateVehicle(OutputVehicle): | |||||
pass | |||||
class VehicleLocation(BaseModel): | class VehicleLocation(BaseModel): | ||||