Add project files.
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
|
||||
namespace Sarand.Net.Standard.Base.Dbas
|
||||
{
|
||||
//==========================================================================
|
||||
//[Serializable()]
|
||||
public enum DbColumnDataType
|
||||
{
|
||||
// Ref. https://msdn.microsoft.com/en-us/library/yy6y35y8%28v=vs.110%29.aspx
|
||||
Unknown = -1,
|
||||
VarChar, //SQL_C_CHAR,
|
||||
Bit, // SQL_C_BIT,
|
||||
TinyInt, // SQL_C_TINYINT,
|
||||
SmallInt, // SQL_C_SHORT,
|
||||
Int, //SQL_C_SLONG,
|
||||
BigInt, // SQL_C_SBIGINT,
|
||||
Single, // SQL_C_REAL,
|
||||
Double, // SQL_C_DOUBLE,
|
||||
Decimal, // SQL_DECIMAL?,
|
||||
DateTime, // SQL_C_TYPE_TIMESTAMP
|
||||
Binary,
|
||||
};
|
||||
//[Serializable()]
|
||||
public enum DbColumnNullable
|
||||
{
|
||||
NoNulls = 0, // SQL_NO_NULLS,
|
||||
Nullable = 1, // SQL_NULLABLE,
|
||||
Unknown = 2, // SQL_NULLABLE_UNKNOWN, // Not known whether or not a data type supports null values.
|
||||
};
|
||||
//==========================================================================
|
||||
//[Serializable()]
|
||||
public class DbDfnColumn
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public DbDfnColumn () { }
|
||||
public DbDfnColumn (String schema, String table, short pos, String name)
|
||||
{
|
||||
Schema = schema;
|
||||
Table = table;
|
||||
Pos = pos;
|
||||
Name = name;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Attributes.
|
||||
public String Schema { get; set; } = String.Empty;
|
||||
public String Table { get; set; } = String.Empty;
|
||||
public short Pos { get; set; } = 0;
|
||||
public String Name { get; set; } = String.Empty;
|
||||
public DbColumnDataType DataType { get; set; } = DbColumnDataType.Unknown;
|
||||
public String DataTypeName { get; set; } = String.Empty;
|
||||
public short DataTypeNative { get; set; } = 0;
|
||||
public String DataTypeNameNative { get; set; } = String.Empty;
|
||||
public bool IsIdentity { get; set; } = false;
|
||||
public long Size { get; set; } = 0;
|
||||
public long BufferLen { get; set; } = 0;
|
||||
public short DecimalDigits { get; set; } = 0;
|
||||
public DbColumnNullable Nullable { get; set; } = DbColumnNullable.Unknown;
|
||||
public bool IsNullable { get; set; } = false;
|
||||
public String Remarks { get; set; } = String.Empty;
|
||||
//-------------------------------------------------------------------
|
||||
// Variable type and default - used in variable declaration.
|
||||
public String GetVariableTypeName ()
|
||||
{
|
||||
switch (DataType)
|
||||
{
|
||||
case DbColumnDataType.Binary:
|
||||
return "ByteArray";
|
||||
}
|
||||
return GetVariableType();
|
||||
}
|
||||
public String GetVariableType ()
|
||||
{
|
||||
switch (DataType)
|
||||
{
|
||||
case DbColumnDataType.VarChar:
|
||||
return "String";
|
||||
case DbColumnDataType.Bit:
|
||||
return "Boolean";
|
||||
case DbColumnDataType.TinyInt:
|
||||
return "Byte";
|
||||
case DbColumnDataType.SmallInt:
|
||||
return "Int16";
|
||||
case DbColumnDataType.Int:
|
||||
return "Int32";
|
||||
case DbColumnDataType.BigInt:
|
||||
return "Int64";
|
||||
case DbColumnDataType.Single:
|
||||
return "Single";
|
||||
case DbColumnDataType.Double:
|
||||
return "Double";
|
||||
case DbColumnDataType.Decimal:
|
||||
return "Decimal";
|
||||
case DbColumnDataType.DateTime:
|
||||
return "DateTime";
|
||||
case DbColumnDataType.Binary:
|
||||
return "Byte[]";
|
||||
}
|
||||
return String.Empty;
|
||||
}
|
||||
public String GetVariableDefault ()
|
||||
{
|
||||
switch (DataType)
|
||||
{
|
||||
case DbColumnDataType.VarChar:
|
||||
return "String.Empty";
|
||||
case DbColumnDataType.Bit:
|
||||
return "false";
|
||||
case DbColumnDataType.TinyInt:
|
||||
return "0";
|
||||
case DbColumnDataType.SmallInt:
|
||||
return "0";
|
||||
case DbColumnDataType.Int:
|
||||
return "0";
|
||||
case DbColumnDataType.BigInt:
|
||||
return "0";
|
||||
case DbColumnDataType.Single:
|
||||
return "0.0f";
|
||||
case DbColumnDataType.Double:
|
||||
return "0.0";
|
||||
case DbColumnDataType.Decimal:
|
||||
return "0.0m";
|
||||
case DbColumnDataType.DateTime:
|
||||
return "DateTime.MinValue";
|
||||
case DbColumnDataType.Binary:
|
||||
return "null";
|
||||
}
|
||||
return String.Empty;
|
||||
}
|
||||
public String GetGetFieldSuffix ()
|
||||
{
|
||||
switch (DataType)
|
||||
{
|
||||
case DbColumnDataType.VarChar:
|
||||
case DbColumnDataType.Bit:
|
||||
case DbColumnDataType.TinyInt:
|
||||
case DbColumnDataType.SmallInt:
|
||||
case DbColumnDataType.Int:
|
||||
case DbColumnDataType.BigInt:
|
||||
case DbColumnDataType.Single:
|
||||
case DbColumnDataType.Double:
|
||||
case DbColumnDataType.Decimal:
|
||||
case DbColumnDataType.DateTime:
|
||||
return GetVariableType();
|
||||
case DbColumnDataType.Binary:
|
||||
return "ByteArray";
|
||||
}
|
||||
return String.Empty;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//==========================================================================
|
||||
// Column list extensions.
|
||||
public static class DbDfnColumnList
|
||||
{
|
||||
// List of column names.
|
||||
public static List<String> GetNames (this List<DbDfnColumn> columns)
|
||||
{
|
||||
List<String> names = new List<String>();
|
||||
foreach (var column in columns)
|
||||
{
|
||||
names.Add(column.Name);
|
||||
}
|
||||
return names;
|
||||
}
|
||||
// Identity column.
|
||||
public static String GetIdentityColumnName (this List<DbDfnColumn> columns)
|
||||
{
|
||||
List<String> names = new List<String>();
|
||||
foreach (var column in columns)
|
||||
{
|
||||
if (column.IsIdentity)
|
||||
return column.Name;
|
||||
}
|
||||
return String.Empty;
|
||||
}
|
||||
// Locate the column in the list:
|
||||
public static DbDfnColumn GetColumnByPos (this List<DbDfnColumn> columns, short pos)
|
||||
{
|
||||
foreach (var column in columns)
|
||||
{
|
||||
if (column.Pos == pos)
|
||||
return column;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static DbDfnColumn GetColumnByName (this List<DbDfnColumn> columns, String name)
|
||||
{
|
||||
foreach (var column in columns)
|
||||
{
|
||||
if (column.Name.EqualsCI(name))
|
||||
return column;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
//==========================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user