Changeset 11 for trunk/USystem.pas


Ignore:
Timestamp:
Jun 9, 2011, 12:34:21 PM (13 years ago)
Author:
george
Message:
  • Added: Build in SQL structure and initial values initialization.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/USystem.pas

    r9 r11  
    66
    77uses
    8   Classes, SysUtils, SpecializedList, USqlDatabase, Strings;
     8  Classes, SysUtils, SpecializedList, SpecializedDictionary, USqlDatabase,
     9  Strings;
     10
     11const
     12  ObjectGroupTable = 'ObjectGroup';
     13  ObjectTable = 'Object';
     14  InformationTable = 'Information';
     15  PropertyTable = 'Property';
     16  PropertyTypeTable = 'Type';
     17  PropertyGroupTable = 'PropertyGroup';
    918
    1019type
    1120  TDbValueType = (vtNone, vtInteger, vtString, vtText, vtDateTime, vtFloat, vtImage, vtBoolean,
    1221  vtIPv4, vtMAC, vtIPv6, vtFile, vtGPS, vtEnumeration, vtHyperlink, vtPassword,
    13   vtReference, vtDate, vtTime, vtColor);
     22  vtReference, vtDate, vtTime, vtColor, vtCurrency);
    1423
    1524  TChronisType = class;
     
    6372    DbType: string;
    6473    DbTable: string;
     74    TypeIndex: Integer;
    6575    Parent: TChronisType;
    6676  end;
     
    7181    Types: TListObject;  // TList<TChronisType>
    7282    Database: TSQLDatabase;
     83    function AddType(Name, DataType: string; TypeIndex: TDbValueType): Integer;
     84    function AddObject(Name, TableName, Schema: string; GroupId: Integer): Integer;
     85    function AddProperty(ObjectId: Integer; Name, ColumnName: string; DataType: Integer): Integer;
     86    function AddObjectGroup(Name: string): Integer;
    7387    constructor Create;
    7488    destructor Destroy; override;
     
    107121    try
    108122      Properties := TDbRows.Create;
    109       Base.Database.Query(Properties, 'SELECT * FROM `Property` WHERE `Object`='
    110         + IntToStr(Obj.Id));
     123      Base.Database.Query(Properties, 'SELECT * FROM `' + PropertyTable +
     124        '` WHERE `Object`=' + IntToStr(Obj.Id));
    111125      Columns.Clear;
    112126      NewColumn := TReportColumn.Create;
     
    149163end;
    150164
     165function TChronisBase.AddType(Name, DataType: string; TypeIndex: TDbValueType): Integer;
     166var
     167  DbRows: TDbRows;
     168  Data: TDictionaryStringString;
     169begin
     170  try
     171    DbRows := TDbRows.Create;
     172    Data := TDictionaryStringString.Create;
     173    Data.Add('Name', Name);
     174    Data.Add('DbType', DataType);
     175    Data.Add('TypeIndex', IntToStr(Integer(TypeIndex)));
     176    Database.Insert(PropertyTypeTable, Data);
     177    Result := Database.LastInsertId;
     178  finally
     179    Data.Free;
     180    DbRows.Free;
     181  end;
     182end;
     183
     184function TChronisBase.AddObject(Name, TableName, Schema: string;
     185  GroupId: Integer): Integer;
     186var
     187  DbRows: TDbRows;
     188  Data: TDictionaryStringString;
     189begin
     190  try
     191    DbRows := TDbRows.Create;
     192    Data := TDictionaryStringString.Create;
     193    Data.Add('Name', Name);
     194    Data.Add('Schema', Schema);
     195    Data.Add('Table', TableName);
     196    Data.Add('Group', IntToStr(GroupId));
     197    Database.Insert(ObjectTable, Data);
     198    Result := Database.LastInsertId;
     199  finally
     200    Data.Free;
     201    DbRows.Free;
     202  end;
     203end;
     204
     205function TChronisBase.AddProperty(ObjectId: Integer; Name, ColumnName: string;
     206  DataType: Integer): Integer;
     207var
     208  DbRows: TDbRows;
     209  Data: TDictionaryStringString;
     210begin
     211  try
     212    DbRows := TDbRows.Create;
     213    Data := TDictionaryStringString.Create;
     214    Data.Add('Name', Name);
     215    Data.Add('Object', IntToStr(ObjectId));
     216    Data.Add('ColumnName', ColumnName);
     217    Data.Add('Type', IntToStr(DataType));
     218    Database.Insert(PropertyTable, Data);
     219    Result := Database.LastInsertId;
     220  finally
     221    Data.Free;
     222    DbRows.Free;
     223  end;
     224end;
     225
     226function TChronisBase.AddObjectGroup(Name: string): Integer;
     227var
     228  DbRows: TDbRows;
     229  Data: TDictionaryStringString;
     230begin
     231  try
     232    DbRows := TDbRows.Create;
     233    Data := TDictionaryStringString.Create;
     234    Data.Add('Name', Name);
     235    Database.Insert(ObjectGroupTable, Data);
     236    Result := Database.LastInsertId;
     237  finally
     238    Data.Free;
     239    DbRows.Free;
     240  end;
     241end;
     242
    151243constructor TChronisBase.Create;
    152244begin
     
    184276  try
    185277    DbRows := TDbRows.Create;
    186     Base.Database.Query(DbRows, 'SELECT * FROM `Object` WHERE `Id`=' + IntToStr(ObjectId));
     278    Base.Database.Query(DbRows, 'SELECT * FROM `' + ObjectTable +
     279      '` WHERE `Id`=' + IntToStr(ObjectId));
    187280    if DbRows.Count = 1 then begin
    188281      Id := ObjectId;
Note: See TracChangeset for help on using the changeset viewer.