You are not logged in.
Pages: 1
The dates for the sample data in the MVC example seem to be awry (using delphi 2007 on windows 7). The version of ComputeMinimalData below should be better.
procedure TBlogApplication.ComputeMinimalData;
var info: TSQLBlogInfo;
article: TSQLArticle;
comment: TSQLComment;
tag: TSQLTag;
batch: TSQLRestBatch;
n,t: integer;
articles,tags,comments: TIDDynArray;
tmp: RawUTF8;
auto: IAutoFree; // mandatory only for FPC
tmpTime: TDateTime;
begin
auto := TSQLRecord.AutoFree([ // avoid several try..finally
@info,TSQLBlogInfo, @article,TSQLArticle, @comment,TSQLComment, @tag,TSQLTag]);
if not RestModel.Retrieve('',info) then begin // retrieve first item
info.Title := 'mORMot BLOG';
info.Language := 'en';
info.Description := 'Sample Blog Web Application using Synopse mORMot MVC';
info.Copyright := '©2016 <a href=http://synopse.info>Synopse Informatique</a>';
info.About := TSynTestCase.RandomTextParagraph(30,'!');
RestModel.Add(info,true);
end;
if RestModel.TableHasRows(TSQLArticle) then
exit;
tmp := StringFromFile('d:\download\2014-12-27-a8003957c2ae6bde5be6ea279c9c9ce4-backup.txt');
if tmp<>'' then begin
DotClearFlatImport(RestModel,tmp,fTagsLookup,'http://blog.synopse.info',
(TMVCRunOnRestServer(fMainRunner).Views as TMVCViewsMustache).ViewStaticFolder);
exit;
end;
SetLength(tags,32);
for n := 1 to length(tags) do begin
tag.Ident := 'Tag'+UInt32ToUtf8(n);
tag.IDValue := n*2; // force test TSQLTags layout
tags[n-1] := RestModel.Add(tag,true,true);
end;
fTagsLookup.Init(RestModel); // reload after initial fill
tmpTime := now - FAKEDATA_ARTICLESCOUNT;
batch := TSQLRestBatch.Create(RestModel,TSQLArticle,20000);
try
article.Author := TSQLAuthor(1);
article.AuthorName := 'synopse';
for n := 1 to FAKEDATA_ARTICLESCOUNT do begin
article.CreatedAt := TimeLogFromDateTime(tmpTime);
article.ModifiedAt := article.CreatedAt;
tmpTime := tmpTime +1;
article.SetPublishedMonth(article.CreatedAt);
//article.PublishedMonth := 2014*12+(n div 10);
article.Title := TSynTestCase.RandomTextParagraph(5,' ');
article.Abstract := TSynTestCase.RandomTextParagraph(30,'!');
article.Content := TSynTestCase.RandomTextParagraph(200,'.','http://megascroll.net');
article.Tags := nil;
for t := 1 to Random(6) do
article.TagsAddOrdered(tags[random(length(tags))],fTagsLookup);
batch.Add(article,true,false,[],true);
end;
if RestModel.BatchSend(batch,articles)=HTTP_SUCCESS then begin
fTagsLookup.SaveOccurence(RestModel);
comment.Author := article.Author;
comment.AuthorName := article.AuthorName;
batch.Reset(TSQLComment,20000);
for n := 1 to FAKEDATA_ARTICLESCOUNT*2 do begin
comment.Article := Pointer(articles[random(length(articles))]);
comment.Title := TSynTestCase.RandomTextParagraph(5,' ');
comment.Content := TSynTestCase.RandomTextParagraph(30,'.','http://megascroll.net');
batch.Add(Comment,true);
end;
RestModel.BatchSend(batch,comments)
end;
finally
batch.Free;
end;
end;
Another very small thing - The base timestamped record doesn't need to be declared. It could use TSQLRecordTimed in mormot.pas instead of TSQLRecordTimeStamped
Offline
Pages: 1