Location Service now ensures that the 0,0 location exists

This commit is contained in:
Zeeshaun 2026-01-23 14:24:08 -06:00
parent 241312b0be
commit 3a99c2154c

View File

@ -23,6 +23,8 @@ public class LocationStore
.Ascending(l => l.Coord.Y); .Ascending(l => l.Coord.Y);
var coordIndexOptions = new CreateIndexOptions { Unique = true }; var coordIndexOptions = new CreateIndexOptions { Unique = true };
_col.Indexes.CreateOne(new CreateIndexModel<Location>(coordIndex, coordIndexOptions)); _col.Indexes.CreateOne(new CreateIndexModel<Location>(coordIndex, coordIndexOptions));
EnsureOriginLocation();
} }
private static void EnsureLocationSchema(IMongoDatabase db, string collectionName) private static void EnsureLocationSchema(IMongoDatabase db, string collectionName)
@ -100,4 +102,31 @@ public class LocationStore
var result = await _col.UpdateOneAsync(filter, update); var result = await _col.UpdateOneAsync(filter, update);
return result.ModifiedCount > 0; return result.ModifiedCount > 0;
} }
private void EnsureOriginLocation()
{
var filter = Builders<Location>.Filter.And(
Builders<Location>.Filter.Eq(l => l.Coord.X, 0),
Builders<Location>.Filter.Eq(l => l.Coord.Y, 0)
);
var existing = _col.Find(filter).FirstOrDefault();
if (existing is not null)
return;
var origin = new Location
{
Name = "Origin",
Coord = new Coord { X = 0, Y = 0 },
CreatedUtc = DateTime.UtcNow
};
try
{
_col.InsertOne(origin);
}
catch (MongoWriteException ex) when (ex.WriteError.Category == ServerErrorCategory.DuplicateKey)
{
// Another instance seeded it first.
}
}
} }