Add project files.

This commit is contained in:
Andy Howard
2021-05-05 15:36:28 +01:00
parent 949836d24c
commit a4cf706eb3
353 changed files with 60029 additions and 0 deletions
+203
View File
@@ -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;
}
}
//==========================================================================
}