Extract SQL from the object structures
type
TOrder = class
FID: string;
FVendor: integer;
FCustomer: integer;
FDate: TDatetime;
FTotal: Currency;
end;
strSelect := TSqlExtractor<TOrder>.ExtractSelectSql(vOrder)
>> strSelect = 'select id, vendor, customer, date, total from order'
You can use Custom Attributes as anottations to customize sql of a object
type
TOrder = class
[KEY]
FID: string; //Now ID is Primary Key
FVendor: integer;
FCustomer: integer;
FDate: TDatetime;
FTotal: Currency;
end;
strSelect := TSqlExtractor<TOrder>.ExtractUpdateSql(vOrder)
>> strSelect = 'update order set id = :id, vendor = :vendor, customer = :customer, date=:date, total=:total where ID = :id'
In this example I'm using a generic list of objects to generate a Inner Join expression
type
TItem = class
FDescription: String;
FPrice: Currency;
end;
TOrder = class
[KEY]
FID: string; //Now ID is Primary Key
FVendor: integer;
FCustomer: integer;
FDate: TDatetime;
FTotal: Currency;
FItem: TObjectList<TItem>;
end;
strSelect := TSqlExtractor<TOrder>.ExtractUpdateSql(vOrder)
>> strSelect = select Order.ID,
Order.Vendor,
Order.Customer,
Order.Date,
Order.Total,
Order.ITem
from Order
INNER JOIN Item as Item on Item.Id = Order.Item
It also would be a Single Instance of TItem The given declaratin will return same sql
TOrder = class
[KEY]
FID: string; //Now ID is Primary Key
FVendor: integer;
FCustomer: integer;
FDate: TDatetime;
FTotal: Currency;
FItem: TItem;
end;