99 lines
2.0 KiB
ObjectPascal
99 lines
2.0 KiB
ObjectPascal
unit ServFishShopMain;
|
|
|
|
{$I Synopse.inc} // define HASINLINE CPU32 CPU64 OWNNORMTOUPPER
|
|
|
|
interface
|
|
|
|
uses
|
|
SynCommons,
|
|
mORMot,
|
|
mORMotHttpServer,
|
|
mORMotService,
|
|
ServFishShopTypes;
|
|
|
|
type
|
|
EFishShop = class(ESynException);
|
|
|
|
TFishShopService = class(TInterfacedObject, IFishShop)
|
|
protected
|
|
fFishData: IFishData;
|
|
public
|
|
function GetSpecialOffersPicture: TServiceCustomAnswer;
|
|
procedure GetFishList(out fishes: TFishList);
|
|
procedure GetFishDetails(const id: variant;
|
|
out fish: TFishDetailed);
|
|
procedure Order(const basket: TBasketList;
|
|
const cardnumber, cardcontrol, discountcoupon: RawUTF8);
|
|
end;
|
|
|
|
TFishShopSettings = class(TSynDaemonSettings)
|
|
published
|
|
end;
|
|
|
|
TFishShopDaemon = class(TSynDaemon)
|
|
protected
|
|
fServer: TSQLRestServer;
|
|
fHttpServer: TSQLHttpServer;
|
|
fFishData: IFishData;
|
|
public
|
|
procedure Start; override;
|
|
procedure Stop; override;
|
|
end;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
{ TFishShopService }
|
|
|
|
function TFishShopService.GetSpecialOffersPicture: TServiceCustomAnswer;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TFishShopService.GetFishList(out fishes: TFishList);
|
|
begin
|
|
if Assigned(fFishData) then
|
|
fFishData.GetFishList(fishes)
|
|
else
|
|
raise EFishShop.Create('Panic Mode');
|
|
end;
|
|
|
|
procedure TFishShopService.GetFishDetails(const id: variant;
|
|
out fish: TFishDetailed);
|
|
begin
|
|
if VarIsEmptyOrNull(id) then
|
|
exit;
|
|
|
|
end;
|
|
|
|
procedure TFishShopService.Order(const basket: TBasketList; const cardnumber,
|
|
cardcontrol, discountcoupon: RawUTF8);
|
|
begin
|
|
|
|
end;
|
|
|
|
|
|
{ TFishShopDaemon }
|
|
|
|
procedure TFishShopDaemon.Start;
|
|
var
|
|
instance: TFishShopService;
|
|
begin
|
|
fFishData := TFishDataLegacyDB.Create;
|
|
fServer := TSQLRestServerFullMemory.CreateWithOwnModel([], False, FISHSHOP_ROOT);
|
|
instance := TFishShopService.Create;
|
|
instance.fFishData := fFishData;
|
|
fServer.ServiceDefine(instance, [IFishShop], FISHSHOP_CONTRACT);
|
|
fHttpServer := TSQLHttpServer.Create(FISHSHOP_PORT, fServer);
|
|
end;
|
|
|
|
procedure TFishShopDaemon.Stop;
|
|
begin
|
|
fServer.Free;
|
|
fHttpServer.Free;
|
|
fFishData := nil;
|
|
end;
|
|
|
|
end.
|