Decky/src/Decky.Core/Api/Models/DeckDtos.cs
2026-07-19 13:10:55 -07:00

104 lines
2.4 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
namespace Decky.Core.Api.Models;
public sealed record DeckUserDto
{
[JsonPropertyName("primaryKey")]
public string PrimaryKey { get; init; } = string.Empty;
[JsonPropertyName("uid")]
public string UserId { get; init; } = string.Empty;
[JsonPropertyName("displayname")]
public string DisplayName { get; init; } = string.Empty;
}
public sealed record BoardPermissionsDto
{
[JsonPropertyName("PERMISSION_READ")]
public bool CanRead { get; init; }
[JsonPropertyName("PERMISSION_EDIT")]
public bool CanEdit { get; init; }
[JsonPropertyName("PERMISSION_MANAGE")]
public bool CanManage { get; init; }
[JsonPropertyName("PERMISSION_SHARE")]
public bool CanShare { get; init; }
}
public sealed record BoardDto
{
public int Id { get; init; }
public string Title { get; init; } = string.Empty;
public DeckUserDto? Owner { get; init; }
public string? Color { get; init; }
public bool Archived { get; init; }
public long LastModified { get; init; }
public BoardPermissionsDto? Permissions { get; init; }
[JsonExtensionData]
public Dictionary<string, JsonElement>? AdditionalData { get; init; }
}
public sealed record StackDto
{
public int Id { get; init; }
public int BoardId { get; init; }
public string Title { get; init; } = string.Empty;
public int Order { get; init; }
public long LastModified { get; init; }
public IReadOnlyList<CardDto> Cards { get; init; } = [];
[JsonExtensionData]
public Dictionary<string, JsonElement>? AdditionalData { get; init; }
}
public sealed record CardDto
{
public int Id { get; init; }
public int StackId { get; init; }
public string Title { get; init; } = string.Empty;
public string? Description { get; init; }
public string Type { get; init; } = "plain";
public string Owner { get; init; } = string.Empty;
public int Order { get; init; }
public bool Archived { get; init; }
public DateTimeOffset? Done { get; init; }
[JsonPropertyName("duedate")]
public DateTimeOffset? DueDate { get; init; }
[JsonPropertyName("startdate")]
public DateTimeOffset? StartDate { get; init; }
public string? Color { get; init; }
public long LastModified { get; init; }
[JsonExtensionData]
public Dictionary<string, JsonElement>? AdditionalData { get; init; }
}