Initial commit

This commit is contained in:
2026-07-13 09:25:40 +07:00
parent c08ff54676
commit bccfb156d7
1938 changed files with 641646 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace RobotNet10.MapManager.Data;
/// <summary>
/// Node entity - Waypoints/nodes on the map
/// Maps to VDMA LIF: layouts[].nodes[]
/// </summary>
[Table("Nodes")]
public class Node
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
/// <summary>
/// Parent level reference
/// </summary>
[Required]
public Guid LevelId { get; set; }
/// <summary>
/// Node identifier (VDMA LIF: nodeId) - Required
/// Unique within level
/// </summary>
[Required]
[StringLength(128)]
public string NodeId { get; set; } = string.Empty;
/// <summary>
/// Node name (VDMA LIF: nodeName) - Optional
/// </summary>
[StringLength(256)]
public string? NodeName { get; set; }
/// <summary>
/// Node description (VDMA LIF: nodeDescription) - Optional
/// </summary>
public string? NodeDescription { get; set; }
/// <summary>
/// Map identifier (VDMA LIF: mapId) - Optional
/// Reference to map image or data
/// </summary>
[StringLength(128)]
public string? MapId { get; set; }
/// <summary>
/// X coordinate in meters (VDMA LIF: nodePosition.x) - Required
/// </summary>
[Required]
public double X { get; set; }
/// <summary>
/// Y coordinate in meters (VDMA LIF: nodePosition.y) - Required
/// </summary>
[Required]
public double Y { get; set; }
// Navigation properties
[ForeignKey(nameof(LevelId))]
public virtual LayoutLevel Level { get; set; } = null!;
public virtual ICollection<NodeVehicleProperty> VehicleProperties { get; set; } = new List<NodeVehicleProperty>();
public virtual ICollection<Edge> OutgoingEdges { get; set; } = new List<Edge>();
public virtual ICollection<Edge> IncomingEdges { get; set; } = new List<Edge>();
public virtual ICollection<StationInteractionNode> StationInteractions { get; set; } = new List<StationInteractionNode>();
}