type
TDataModule1 = class(TDataModule)
- index: TFDTable;
+ database: TFDTable;
FDTable2: TFDTable;
indexTable: TFDTable;
reader: TFDTable;
procedure backNumber(id: integer; out Data: TJSONObject);
function checkUserPassword(id: integer; password: string): Boolean;
procedure createReaderId(Data: TJSONObject);
- procedure custData(id: integer; data: TJSONObject);
+ procedure deleteReaderId(Data: TJSONObject);
+ procedure custData(id: integer; Data: TJSONObject);
procedure custView(id: integer; out Data: TJSONObject);
procedure deleteMagazine(id: integer);
procedure deleteNumber(id, num: integer);
- procedure deleteUser(id: integer);
+ procedure deleteWriter(id: integer);
procedure getView(id, num: integer; out Data: TJSONObject); overload;
procedure getView(id: integer; out Data: TJSONObject); overload;
procedure magazines(id: integer; out Data: TJSONObject);
- procedure magListAll(out data: TJSONObject);
+ procedure magListAll(out Data: TJSONObject);
procedure magData(id: integer; out Data: TJSONObject);
function magid(name: string): integer;
procedure magIdOff(id, magid: integer);
procedure magIdOn(id, magid: integer);
- procedure createMagId(id: integer; out data: TJSONObject);
+ procedure createMagId(id: integer; out Data: TJSONObject);
procedure postMessage(id: integer; Data: TJSONObject);
procedure createWriterId(Data: TJSONObject);
- procedure readuserData(id: integer; out Data: TJSONObject);
+ procedure readerData(id: integer; out Data: TJSONObject);
procedure titleView(id: integer; Data: TJSONObject);
procedure updateWriterId(id: integer; Data: TJSONObject);
procedure userView(id: integer; out Data: TJSONObject);
uses System.Variants, System.Generics.Collections;
-{%CLASSGROUP 'Vcl.Controls.TControl'}
+{ %CLASSGROUP 'Vcl.Controls.TControl' }
{$R *.dfm}
mem: TStringList;
blob: TStream;
begin
- with FDQuery1.Params do
- begin
- Clear;
- ParamByName('id').AsInteger := id;
- end;
Data := TJSONObject.Create;
d := Data;
mem := TStringList.Create;
with FDQuery1 do
begin
- Open('select file,enabled from news where magId = :id order by day;');
- First;
+ SQL.Clear;
+ SQL.Add('select file,enabled from news where magId = :id order by lastDay;');
+ Params.ParamByName('id').AsInteger := id;
+ Open;
while Eof = false do
begin
blob := CreateBlobStream(FieldByName('text'), bmRead);
result := writer.Lookup('id', id, 'password') = password;
end;
-procedure TDataModule1.createMagId(id: integer; out data: TJSONObject);
+procedure TDataModule1.createMagId(id: integer; out Data: TJSONObject);
var
i: integer;
begin
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('select MAX(magId) as count from mag;');
FDQuery1.Open;
- i:=FDQuery1.FieldByName('count').AsInteger+1;
+ i := FDQuery1.FieldByName('count').AsInteger + 1;
mag.Append;
- mag.FieldByName('magId').AsInteger:=i;
- mag.FieldByName('day').AsDateTime:=Date;
- mag.FieldByName('lastDay').AsDateTime:=Date;
- mag.FieldByName('magName').AsString:=data.Values['magName'].Value;
- mag.FieldByName('comment').AsString:=data.Values['comment'].Value;
- mag.FieldByName('enable').AsString:=data.Values['enable'].Value;
+ mag.FieldByName('magId').AsInteger := i;
+ mag.FieldByName('day').AsDateTime := Date;
+ mag.FieldByName('lastDay').AsDateTime := Date;
+ mag.FieldByName('magName').AsString := Data.Values['magName'].Value;
+ mag.FieldByName('comment').AsString := Data.Values['comment'].Value;
+ mag.FieldByName('enable').AsString := Data.Values['enable'].Value;
mag.Post;
- magList.AppendRecord([id,i]);
+ magList.AppendRecord([id, i]);
end;
procedure TDataModule1.createReaderId(Data: TJSONObject);
const
tmp = 'create table if not exists ';
begin
-// FDQuery1.ExecSQL(tmp+'index(no int primary key, magId int, readerId int, writeId int);');
- FDQuery1.ExecSQL(tmp+'mag(magId int primary key, magName varchar(20), comment varchar(50), day date, lastDay date, enable bool);');
- FDQuery1.ExecSQL(tmp+'writer(writerId int primary key, writer varchar(20), mail varchar(20), password varchar(20));');
- FDQuery1.ExecSQL(tmp+'reader(readerId int primary key, reader varchar(20), mail varchar(20), password varchar(20));');
- FDQuery1.ExecSQL(tmp+'news(magId int, no int, day date, changed bool, enabled bool, primary key (magId,no));');
- FDQuery1.ExecSQL(tmp+'indexTable(readerId int, magId int, primary key (readerId,magId));');
- FDQuery1.ExecSQL(tmp+'magList(writerId int, magId int, primary key (writerId,magId));');
-// index.Open;
+ // FDQuery1.ExecSQL(tmp+'index(no int primary key, magId int, readerId int, writeId int);');
+ FDQuery1.ExecSQL
+ (tmp + 'mag(magId int primary key, magName varchar(20), comment varchar(50), day date, lastDay date, enable bool);');
+ FDQuery1.ExecSQL
+ (tmp + 'writer(writerId int primary key, writer varchar(20), mail varchar(20), password varchar(20));');
+ FDQuery1.ExecSQL
+ (tmp + 'reader(readerId int primary key, reader varchar(20), mail varchar(20), password varchar(20));');
+ FDQuery1.ExecSQL
+ (tmp + 'news(magId int, no int, day date, changed bool, enabled bool, primary key (magId,no));');
+ FDQuery1.ExecSQL
+ (tmp + 'indexTable(readerId int, magId int, primary key (readerId,magId));');
+ FDQuery1.ExecSQL
+ (tmp + 'magList(writerId int, magId int, primary key (writerId,magId));');
+ // index.Open;
mag.Open;
writer.Open;
reader.Open;
news.Delete;
end;
-procedure TDataModule1.deleteUser(id: integer);
+procedure TDataModule1.deleteReaderId(Data: TJSONObject);
+var
+ id: integer;
+ na, ma, pa: string;
+begin
+ id := Data.Values['id'].Value.ToInteger;
+ na := Data.Values['reader'].Value;
+ ma := Data.Values['mail'].Value;
+ pa := Data.Values['password'].Value;
+ if reader.Locate('readerid;reader;mail;password', VarArrayOf([id, na, ma, pa])
+ ) = true then
+ reader.Delete;
+ FDQuery1.SQL.Clear;
+ FDQuery1.SQL.Add('select * from indextable whrer readerid = :id;');
+ FDQuery1.Params.ParamByName('id').AsInteger := id;
+ FDQuery1.Open;
+ while FDQuery1.Eof = false do
+ FDQuery1.Delete;
+end;
+
+procedure TDataModule1.deleteWriter(id: integer);
var
i: integer;
list: TList<integer>;
begin
- FDQuery1.Params.Clear;
+ FDQuery1.SQL.Clear;
+ FDQuery1.SQL.Add('select * from maglist where userid = :id;');
FDQuery1.Params.ParamByName('id').AsInteger := id;
- FDQuery1.Open('select * from maglist where userid = :id;');
+ FDQuery1.Open;
list := TList<integer>.Create;
while FDQuery1.Eof = false do
begin
list.Free;
end;
-procedure TDataModule1.readuserData(id: integer; out Data: TJSONObject);
-var
- i: Integer;
+procedure TDataModule1.readerData(id: integer; out Data: TJSONObject);
begin
if reader.Locate('readerid', id) = true then
begin
Data := TJSONObject.Create;
- for i := 1 to reader.Fields.Count-1 do
- Data.AddPair(reader.Fields[i].FieldName, reader.Fields[i].AsString);
+ Data.AddPair('name', reader.FieldByName('reader').AsString);
+ Data.AddPair('mail', reader.FieldByName('mail').AsString);
end;
end;
list.Free;
end;
-procedure TDataModule1.custData(id: integer; data: TJSONObject);
-var
- i: Integer;
+procedure TDataModule1.custData(id: integer; Data: TJSONObject);
begin
- if writer.Locate('writerid',id) = true then
+ if writer.Locate('writerid', id) = true then
begin
- data.AddPair('name',writer.FieldByName('writer').AsString);
- data.AddPair('mail',writer.FieldByName('mail').AsString);
+ Data.AddPair('name', writer.FieldByName('writer').AsString);
+ Data.AddPair('mail', writer.FieldByName('mail').AsString);
end;
end;
Data.AddPair('comment', FDQuery1.FieldByName('comment').AsString);
Data.AddPair('day', FDQuery1.FieldByName('day').AsString);
Data.AddPair('last', FDQuery1.FieldByName('lastDay').AsString);
- FDQuery1.Open('select COUNT(*) as count do mag where magid = :id;');
+ FDQuery1.SQL.Clear;
+ FDQuery1.SQL.Add('select COUNT(*) as count from indextable where magid = :id;');
+ FDQuery1.ParamByName('id').AsInteger:=id;
+ FDQuery1.Open;
Data.AddPair('count', FDQuery1.FieldByName('count').AsString);
end;
end;
procedure TDataModule1.magIdOn(id, magid: integer);
begin
- if (writer.Locate('readerid', id) = true) and (mag.Locate('magid', magid) = true)
- then
+ if (writer.Locate('readerid', id) = true) and
+ (mag.Locate('magid', magid) = true) then
indexTable.AppendRecord([id, magid]);
end;
-procedure TDataModule1.magListAll(out data: TJSONObject);
+procedure TDataModule1.magListAll(out Data: TJSONObject);
var
- i: Integer;
js: TJSONObject;
ar: TJSONArray;
val: TJSONValue;
begin
mag.First;
- ar:=TJSONArray.Create;
+ ar := TJSONArray.Create;
while mag.Eof = false do
begin
- js:=TJSONObject.Create;
- js.AddPair('magName',mag.FieldByName('magName').AsString);
- js.AddPair('comment',mag.FieldByName('comment').AsString);
- js.AddPair('day',mag.FieldByName('day').AsString);
- js.AddPair('lastDay',mag.FieldByName('lastDay').AsString);
- ar.Add(js);
+ js := TJSONObject.Create;
+ js.AddPair('magName', mag.FieldByName('magName').AsString);
+ js.AddPair('comment', mag.FieldByName('comment').AsString);
+ js.AddPair('day', mag.FieldByName('day').AsString);
+ js.AddPair('lastDay', mag.FieldByName('lastDay').AsString);
+ ar.Add(js);
mag.Next;
end;
- data:=TJSONObject.Create;
+ Data := TJSONObject.Create;
if ar.Count > 0 then
- data.AddPair('items',ar)
+ Data.AddPair('items', ar)
else
- data.AddPair('items',TJSONFalse.Create);
+ Data.AddPair('items', TJSONFalse.Create);
if mag.FieldByName('enable').AsBoolean = true then
- val:=TJSONTrue.Create
+ val := TJSONTrue.Create
else
- val:=TJSONFalse.Create;
- data.AddPair('enable',val);
+ val := TJSONFalse.Create;
+ Data.AddPair('enable', val);
end;
procedure TDataModule1.magazines(id: integer; out Data: TJSONObject);
d: TJSONObject;
val: TJSONValue;
ar: TJSONArray;
+ list: TList<integer>;
+ i: integer;
begin
+ d:=data;
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('select * from maglist where writerid = :id;');
FDQuery1.Params.ParamByName('id').AsInteger := id;
FDQuery1.Open;
- ar:=TJSONArray.Create;
+ ar := TJSONArray.Create;
+ list:=TList<integer>.Create;
while FDQuery1.Eof = false do
begin
- magData(FDQuery1.FieldByName('magId').AsInteger, d);
- ar.Add(d);
+ list.Add(FDQuery1.FieldByName('magId').AsInteger);
FDQuery1.Next;
end;
+ for i in list do
+ begin
+ magData(i,d);
+ ar.Add(d);
+ end;
+ list.Free;
if ar.Count = 0 then
begin
ar.Free;
- val:=TJSONFalse.Create;
+ val := TJSONFalse.Create;
end
else
- val:=ar;
+ val := ar;
Data := TJSONObject.Create;
- data.AddPair('mag',val);
+ Data.AddPair('mag', val);
end;
function TDataModule1.makeTable(Sender: TObject): TJSONObject;
if writer.Locate('mail', ma) = false then
begin
FDQuery1.Open('select MAX(writerId) as id from writer;');
- i := FDQuery1.FieldByName('id').AsInteger+1;
+ i := FDQuery1.FieldByName('id').AsInteger + 1;
na := Data.Values['name'].Value;
ma := Data.Values['mail'].Value;
pa := Data.Values['password'].Value;
top: TPageProducer;
writerTop: TPageProducer;
writerData: TPageProducer;
+ backnumber: TPageProducer;
procedure WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
- procedure WebModule1readerTopAction(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
- procedure WebModule1registAction(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
- procedure WebModule1writerTopAction(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
procedure WebModuleCreate(Sender: TObject);
procedure WebModule1writeMagAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
Response: TWebResponse; var Handled: Boolean);
procedure WebModule1writerDataAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
+ procedure WebModule1readerDataAction(Sender: TObject; Request: TWebRequest;
+ Response: TWebResponse; var Handled: Boolean);
+ procedure WebModule1detailAction(Sender: TObject; Request: TWebRequest;
+ Response: TWebResponse; var Handled: Boolean);
private
{ private \90é\8c¾ }
writerId: integer;
- userId: integer;
+ readerId: integer;
public
{ public \90é\8c¾ }
end;
data.Free;
end;
-procedure TWebModule1.WebModule1readerTopAction(Sender: TObject;
+procedure TWebModule1.WebModule1detailAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
data: TJSONObject;
begin
- if userId = 0 then
- begin
- Handled := false;
- Exit;
- end;
+ DataModule1.backnumber(Request.QueryFields.Values['id'].ToInteger, data);
Response.ContentType := 'text/html;charset=utf-8';
- DataModule1.userView(userId, data);
- mustache := TSynMustache.Parse(readerTop.Content);
- Response.Content := mustache.RenderJSON(data.ToJSON);
+ mustache := TSynMustache.Parse(backnumber.Content);
+ Response.Content := mustache.RenderJSON(data.ToString);
end;
-procedure TWebModule1.WebModule1registAction(Sender: TObject;
+procedure TWebModule1.WebModule1readerDataAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
data: TJSONObject;
+ num: TJSONNumber;
begin
case Request.MethodType of
- mtPOST:
+ mtGet:
+ if readerId = 0 then
+ begin
+ Handled := false;
+ Exit;
+ end;
+ mtPut:
+ ;
+ mtPost:
with Request.ContentFields do
begin
data := TJSONObject.Create;
data.AddPair('name', Values['reader']);
DataModule1.createReaderId(data);
data.Free;
- Response.SendRedirect('/reader/top');
+ end;
+ mtDelete:
+ with Request.ContentFields do
+ begin
+ data := TJSONObject.Create;
+ num := TJSONNumber.Create(readerId);
+ data.AddPair('id', num);
+ data.AddPair('name', Values['reader']);
+ data.AddPair('mail', Values['mail']);
+ data.AddPair('password', Values['password']);
+ DataModule1.deleteReaderId(data);
+ num.Free;
+ data.Free;
end;
end;
+ Response.ContentType := 'text/html;charset=utf-8';
+ DataModule1.userView(readerId, data);
+ mustache := TSynMustache.Parse(readerTop.Content);
+ Response.Content := mustache.RenderJSON(data.ToJSON);
end;
procedure TWebModule1.WebModule1selectionAction(Sender: TObject;
case Request.MethodType of
mtGet:
Handled := false;
- mtPOST:
- DataModule1.magIdOn(userId, id);
+ mtPost:
+ DataModule1.magIdOn(readerId, id);
mtDelete:
- DataModule1.magIdOff(userId, id);
+ DataModule1.magIdOff(readerId, id);
end;
end;
data.AddPair('enable', TJSONTrue.Create);
DataModule1.createMagId(writerId, data);
data.Free;
- WebModule1writerTopAction(Sender, Request, Response, Handled);
+ Response.SendRedirect('/writer/data');
end;
procedure TWebModule1.WebModule1writerDataAction(Sender: TObject;
var
data: TJSONObject;
begin
- if writerId > 0 then
- begin
- case Request.MethodType of
- mtPOST:
+ case Request.MethodType of
+ mtGet:
+ if writerId = 0 then
+ begin
+ Handled := false;
+ Exit;
+ end;
+ mtPost:
+ with Request.ContentFields do
+ begin
+ data := TJSONObject.Create;
+ data.AddPair('mail', Values['mail']);
+ data.AddPair('password', Values['password']);
+ data.AddPair('name', Values['writer']);
+ DataModule1.createWriterId(data);
+ data.Free;
+ end;
+ mtPut:
+ begin
+ data := TJSONObject.Create;
with Request.ContentFields do
begin
- data := TJSONObject.Create;
+ data.AddPair('writer', Values['name']);
data.AddPair('mail', Values['mail']);
data.AddPair('password', Values['password']);
- data.AddPair('name', Values['writer']);
- DataModule1.createWriterId(data);
- data.Free;
end;
- mtPut:
- begin
- data := TJSONObject.Create;
- with Request.ContentFields do
- begin
- data.AddPair('writer', Values['name']);
- data.AddPair('mail', Values['mail']);
- data.AddPair('password', Values['password']);
- end;
- DataModule1.updateWriterId(writerId, data);
- data.Free;
- end;
- end;
- data:=TJSONObject.Create;
- DataModule1.custData(writerId,data);
- Response.ContentType := 'text/html;charset=utf-8';
- mustache:=TSynMustache.Parse(writerData.Content);
- Response.Content := mustache.RenderJSON(data.ToString);
- data.Free;
- end
- else
- Handled := false;
-end;
-
-procedure TWebModule1.WebModule1writerTopAction(Sender: TObject;
- Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
-var
- data: TJSONObject;
-begin
- if writerId = 0 then
- begin
- Handled := false;
- Exit;
+ DataModule1.updateWriterId(writerId, data);
+ data.Free;
+ end;
end;
+ data := TJSONObject.Create;
DataModule1.magazines(writerId, data);
Response.ContentType := 'text/html;charset=utf-8';
mustache := TSynMustache.Parse(writerTop.Content);
- Response.Content := mustache.RenderJSON(data.Value);
+ Response.Content := mustache.RenderJSON(data.ToJSON);
data.Free;
end;
procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
- userId := 1;
+ readerId := 1;
writerId := 1;
end;