in src/CRA.DataProvider.File/FileVertexProvider.cs [55:167]
public Task DeleteVertexInfo(VertexInfo vertexInfo)
=> FileUtils.DeleteItem(
_fileName,
vertexInfo,
MatchVersion);
public async Task<IEnumerable<VertexInfo>> GetAll()
=> await FileUtils.GetAll<VertexInfo>(
_fileName,
(vi) => true);
public async Task<IEnumerable<VertexInfo>> GetAllRowsForInstance(string instanceName)
=> (await FileUtils.GetAll<VertexInfo>(
_fileName,
(vi) => vi.InstanceName == instanceName));
public async Task<VertexInfo?> GetInstanceFromAddress(string address, int port)
=> (await FileUtils.Get<VertexInfo>(
_fileName,
(vi) => vi.Address == address && vi.Port == port));
public async Task<IEnumerable<string>> GetInstanceNames()
=> (await this.GetAll())
.Where(_ => _.VertexName == "")
.Select(_ => _.InstanceName);
public async Task<VertexInfo?> GetRowForInstance(string instanceName)
=> (await FileUtils.Get<VertexInfo>(
_fileName,
(vi) => vi.InstanceName == instanceName && string.IsNullOrEmpty(vi.VertexName)));
public async Task<VertexInfo?> GetRowForInstanceVertex(string instanceName, string vertexName)
=> (await FileUtils.Get<VertexInfo>(
_fileName,
(vi) => vi.InstanceName == instanceName
&& (vi.VertexName == vertexName
|| (string.IsNullOrEmpty(vertexName) && string.IsNullOrEmpty(vi.VertexName)))));
public async Task<VertexInfo?> GetRowForActiveVertex(string vertexName)
=> (await FileUtils.Get<VertexInfo>(
_fileName,
(vi) => vi.VertexName == vertexName && vi.IsActive));
public async Task<VertexInfo?> GetRowForVertexDefinition(string vertexDefinition)
=> (await FileUtils.Get<VertexInfo>(
_fileName,
(vi) => vi.VertexDefinition == vertexDefinition));
public async Task<IEnumerable<VertexInfo>> GetRowsForShardedInstanceVertex(string instanceName, string vertexName)
=> (await this.GetAll())
.Where(_ =>
_.InstanceName == instanceName
&& _.VertexName.StartsWith(vertexName + "$"));
public async Task<IEnumerable<VertexInfo>> GetRowsForShardedVertex(string vertexName)
=> (await this.GetAll())
.Where(_ => _.VertexName.StartsWith(vertexName + "$"));
public async Task<IEnumerable<VertexInfo>> GetRowsForVertex(string vertexName)
=> (await this.GetAll())
.Where(_ => _.VertexName.StartsWith(vertexName));
public async Task<IEnumerable<string>> GetVertexDefinitions()
=> (await this.GetAll())
.Where(_ => !string.IsNullOrEmpty(_.VertexDefinition)
&& string.IsNullOrEmpty(_.InstanceName))
.Select(_ => _.VertexDefinition);
public async Task<IEnumerable<string>> GetVertexNames()
=> (await this.GetAll())
.Where(_ => !string.IsNullOrEmpty(_.InstanceName))
.Select(_ => _.VertexName);
public async Task<IEnumerable<VertexInfo>> GetVertices(string instanceName)
=> (await this.GetAll())
.Where(_ => _.InstanceName == instanceName);
public Task InsertOrReplace(VertexInfo newInfo)
=> FileUtils.InsertOrUpdate(
_fileName,
newInfo,
MatchVersion,
UpdateVerion);
private VertexInfo UpdateVerion(VertexInfo vcInfo)
=> new VertexInfo(
instanceName: vcInfo.InstanceName,
address: vcInfo.Address,
port: vcInfo.Port,
vertexName: vcInfo.VertexName,
vertexDefinition: vcInfo.VertexDefinition,
vertexCreateAction: vcInfo.VertexCreateAction,
vertexParameter: vcInfo.VertexParameter,
isActive: vcInfo.IsActive,
isSharded: vcInfo.IsActive,
versionId: FileUtils.GetUpdateVersionId(vcInfo.VersionId));
private (bool matched, bool versionMatched) MatchVersion(VertexInfo dbItem, VertexInfo newItem)
{
if (dbItem == newItem)
{
if (newItem.VersionId == null
|| newItem.VersionId == "*"
|| newItem.VersionId == dbItem.VersionId)
{
return (true, true);
}
return (true, false);
}
return (false, false);
}