from sqlalchemy import Integer, String, Date, Time
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy.dialects.mysql.base import TINYINT, TEXT
from datetime import date, time


class Base(DeclarativeBase):
    pass


class AworkProjekt(Base):
    __tablename__ = "awork_projekte"
    awork_project_id: Mapped[str] = mapped_column(String(50), primary_key=True)
    awork_company_id: Mapped[str] = mapped_column(String(50))
    projekt_name: Mapped[str] = mapped_column(String(100))
    projekt_status: Mapped[str] = mapped_column(String(20))
    projekt_typ: Mapped[str] = mapped_column(String(50))
    projekt_allgemein: Mapped[int] = mapped_column(TINYINT, default=0)
    kunde_name: Mapped[str] = mapped_column(String(100))
    tasks_count: Mapped[int] = mapped_column(Integer, default=0)
    tracked_duration: Mapped[int] = mapped_column(Integer, default=0)


class Comment(Base):
    __tablename__ = "status_kommentar"
    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    datum: Mapped[date] = mapped_column(Date)
    kunde: Mapped[str] = mapped_column(String(50))
    start: Mapped[time] = mapped_column(Time)
    benutzer: Mapped[str] = mapped_column(String(50))
    benutzer2: Mapped[str] = mapped_column(String(50), nullable=True)
    fehler: Mapped[int] = mapped_column(Integer)
    status: Mapped[int] = mapped_column(Integer)
    kommentar: Mapped[TEXT] = mapped_column(TEXT)
    awork_project_id: Mapped[str] = mapped_column(String(50), nullable=True)
    awork_task_id: Mapped[str] = mapped_column(String(50), nullable=True)


class User(Base):
    __tablename__ = "benutzer"
    benutzer: Mapped[str] = mapped_column(String(50), primary_key=True)
    name: Mapped[str] = mapped_column(String(50))
    vorname: Mapped[str] = mapped_column(String(50))
    email: Mapped[str] = mapped_column(String(100))
    passwort: Mapped[str] = mapped_column(String(255))
    aktiv: Mapped[int] = mapped_column(TINYINT, default=1)
    awork_user_id: Mapped[str] = mapped_column(String(50), nullable=True)