65 lines
1.7 KiB
C#
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>";
|
|
}
|
|
}
|
|
} |