tbf/TBF/Rig/Input/DataStorage/UniDataStorageReader/Searching/SearchOrderDefinition.cs

65 lines
1.7 KiB
C#

using System;
namespace TBF.Rig.Input.DataStorage.UniDataStorageReader.Searching
{
/// <summary>
/// Parsed representation of QueryTemplate expression.
/// Example:
/// SELECT [Password] WHERE [PcbId] = QUERYPARAM
/// </summary>
public class SearchOrderDefinition
{
/// <summary>
/// Column to be returned.
/// </summary>
public ColumnReference SelectColumn { get; set; }
/// <summary>
/// Column used for lookup.
/// </summary>
public ColumnReference WhereColumn { get; set; }
}
/// <summary>
/// Represents a column reference either by name or by zero-based index.
/// </summary>
public class ColumnReference
{
/// <summary>
/// Column name if referenced by [ColumnName].
/// </summary>
public string Name { get; set; }
/// <summary>
/// Zero-based column index if referenced by COLUMN(n).
/// </summary>
public int? Index { get; set; }
/// <summary>
/// Returns true if reference is by column name.
/// </summary>
public bool HasName
{
get { return !string.IsNullOrWhiteSpace(Name); }
}
/// <summary>
/// Returns true if reference is by column index.
/// </summary>
public bool HasIndex
{
get { return Index.HasValue; }
}
public override string ToString()
{
if (HasName)
return "[" + Name + "]";
if (HasIndex)
return "COLUMN(" + Index.Value + ")";
return "<undefined column reference>";
}
}
}