#
# Erminig - Fonctions relatives à la table upstreams
# Copyright (C) 2025 L0m1g
# Sous licence DOUARN - Voir le fichier LICENCE pour les détails
#
# Ce fichier fait partie du projet Erminig.
# Libre comme l’air, stable comme un menhir, et salé comme le beurre.
#

from erminig.models.db import ErminigDB


def upsert_upstream(db: ErminigDB, name, type_, url, pattern, file):
    db.cursor.execute(
        """
        INSERT INTO upstreams (name, type, url, pattern, file, created_at)
        VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
        ON CONFLICT(name) DO UPDATE SET
            type=excluded.type,
            url=excluded.url,
            pattern=excluded.pattern,
            file=excluded.file
        RETURNING id
    """,
        (name, type_, url, pattern, file),
    )
    row = db.cursor.fetchone()
    return row[0] if row else None


def get_all_upstreams(db: ErminigDB):
    db.cursor.execute(
        """
        SELECT id, name, type, url, pattern, file FROM upstreams
    """
    )
    rows = db.cursor.fetchall()
    return rows
