using aeqw89.DataKeys; using aeqw89.PersistentData; using Beam.Abstractions; namespace Beam.Models; public class ResourceDefinition { public required DataKey Key { get; init; } public required MetaData Meta { get; init; } /// Map of element name to extraction config. Keys must match ^[A-Za-z0-9_-]+$ public required Table Elements { get; init; } /// Minimum 1 item; polymorphic segments discriminated by "type". public required ILinkBuilder Url { get; init; } /// Keys must match ^[A-Za-z0-9_-]+$ public required Table Relations { get; init; } public class MetaData { public required string Name { get; init; } public required string Author { get; init; } public string? Description { get; init; } public string? ProjectUrl { get; init; } } }