import socket
from dataclasses import dataclass


@dataclass
class MedicusConfig:
    server: str
    path: str

    @property
    def dsn(self) -> str:
        return f"{self.server}:{self.path}"


def get_medicus_config() -> MedicusConfig:
    """
    Vrátí konfiguraci připojení k databázi Medicus podle jména počítače.

    Logika:
      - LEKAR    → localhost, M:\\Medicus\\Data\\Medicus.fdb  (ostrý lokální)
      - SESTRA   → 192.168.1.10, M:\\Medicus\\Data\\Medicus.fdb  (ostrý přes síť)
      - LENOVO   → 192.168.1.10, M:\\Medicus\\Data\\Medicus.fdb  (testovací přes síť)
      - ostatní  → localhost, C:\\Medicus 3\\Data\\Medicus.fdb  (testovací lokální)

    Vrací:
        MedicusConfig s atributy server, path a vlastností dsn ("server:path").

    Příklad použití:
        from Knihovny.najdi_medicus import get_medicus_config

        cfg = get_medicus_config()
        con = fdb.connect(dsn=cfg.dsn, user="SYSDBA", password="masterkey")
    """
    hostname = socket.gethostname().upper()

    if hostname == "LEKAR":
        return MedicusConfig(server="localhost", path=r"M:\Medicus\Data\Medicus.fdb")
    elif hostname in ("SESTRA", "LENOVO"):
        return MedicusConfig(server="192.168.1.10", path=r"M:\Medicus\Data\Medicus.fdb")
    else:
        return MedicusConfig(server="localhost", path=r"C:\Medicus 3\Data\Medicus.fdb")


if __name__ == "__main__":
    cfg = get_medicus_config()
    print(f"Hostname : {socket.gethostname()}")
    print(f"Server   : {cfg.server}")
    print(f"Path     : {cfg.path}")
    print(f"DSN      : {cfg.dsn}")
