aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Data/Models/AlertSelector.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-03-19 18:56:34 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-03-19 18:56:34 +0100
commitbee85bf92aab84087798ffa9f3f16336acef2fce (patch)
tree4fc8e2907e6618940cd9bdeb3da1a81172aab459 /src/Enmarcha.Backend/Data/Models/AlertSelector.cs
parentfed5d57b9e5d3df7c34bccb7a120bfa274b2039a (diff)
Basic backoffice for alert management
Diffstat (limited to 'src/Enmarcha.Backend/Data/Models/AlertSelector.cs')
-rw-r--r--src/Enmarcha.Backend/Data/Models/AlertSelector.cs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/Enmarcha.Backend/Data/Models/AlertSelector.cs b/src/Enmarcha.Backend/Data/Models/AlertSelector.cs
new file mode 100644
index 0000000..34b2de3
--- /dev/null
+++ b/src/Enmarcha.Backend/Data/Models/AlertSelector.cs
@@ -0,0 +1,19 @@
+namespace Enmarcha.Backend.Data.Models;
+
+/// <summary>
+/// Defines the scope of an alert (e.g., "stop#vitrasa:1400", "route#xunta:123").
+/// This follows a URI-like pattern for easy parsing and matching.
+/// </summary>
+public class AlertSelector
+{
+ public string Raw { get; set; } = string.Empty;
+
+ public string Type => Raw.Split('#').FirstOrDefault() ?? string.Empty;
+ public string Id => Raw.Split('#').ElementAtOrDefault(1) ?? string.Empty;
+
+ public static AlertSelector FromStop(string feedId, string stopId) => new() { Raw = $"stop#{feedId}:{stopId}" };
+ public static AlertSelector FromRoute(string feedId, string routeId) => new() { Raw = $"route#{feedId}:{routeId}" };
+ public static AlertSelector FromAgency(string feedId) => new() { Raw = $"agency#{feedId}" };
+
+ public override string ToString() => Raw;
+}