using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Immutable;
namespace dopt.DeltaBarth.DataObjects
{
///
/// Eine verpackte Fehlermeldung, die vom API-Server zur Verfügung gestellt wurde.
///
public record class ApiServerError
{
///
/// Statuscode der HTTP-Anfrage
///
public required int status_code { get; init; }
///
/// Fehlerbezeichnung
///
public required string message { get; init; }
///
/// optional: spezifischer Code als Text, der vom Server ausgegeben wurde
///
public string? code { get; init; }
///
/// optional: spezifische Hinweise als Text, der vom Server ausgegeben wurde
///
public string? hints { get; init; }
///
/// optional: spezifischer Typus als Text, der vom Server ausgegeben wurde
///
public string? type { get; init; }
///
/// optional: spezifischer Titel als Text, der vom Server ausgegeben wurde
///
public string? title { get; init; }
///
/// optional: spezifischer ID (vermutlich zur Nachverfolgung) als Text, der vom Server ausgegeben wurde
///
public string? traceId { get; init; }
}
///
/// Status-Objekt: Gibt Aufschluss über Erfolg/Misserfolg einer Routine und beschreibt aufgetretene Fehler
/// mit zusätzlichen Informationen
///
public record class Status
{
///
/// bibliotheksinterner Fehlercode
///
public required int code { get; init; }
///
/// Fehlerbeschreibung oder Python-Exception-Name
///
public required string description { get; init; }
///
/// genauere Beschreibung oder Fehler-Inhalt
///
public required string message { get; init; }
///
/// optional: eventuell aufgetretener API-Server-Fehler
///
public ApiServerError? apiServerError { get; init; }
}
///
/// Nutzerdaten zur API-Interaktion
///
public record class Credentials
{
///
/// Nutzername
///
public required string username { get; init; }
///
/// Passwort
///
public required string password { get; init; }
///
/// Datenbank
///
public required string database { get; init; }
///
/// Mandant
///
public required string mandant { get; init; }
}
///
/// Einzelergebnis der Umsatzprognose, 1 Eintrag von potenziell mehreren
///
public record class UmsatzPrognoseEinzelergebnis
{
///
/// Jahr des Eintrags
///
public required int jahr { get; init; }
///
/// Monat des Eintrags
///
public required int monat { get; init; }
///
/// Prognosewert für den Umsatz
///
public required decimal vorhersage { get; init; }
}
///
/// Sammlung von unterschiedlichen Einzelergebnissen
///
///
public record class UmsatzPrognoseErgebnisse
{
///
/// unveränderliche Sammlung von Einzelergebnissen in Form eines Array
///
public required ImmutableArray daten { get; init; }
}
///
/// Ausgabe der Prognose-Pipeline:
/// enthält das Ergebnis als auch einen dazugehörigen Status
///
public record class UmsatzPrognoseAusgabe
{
///
/// Sammlung von Prognosewerten
///
///
public required UmsatzPrognoseErgebnisse response { get; init; }
///
/// Status über den Erfolg/Misserfolg der Routine
///
///
public required Status status { get; init; }
}
}