v0.0.5
+ Добавлены проверки на обновление/добавление/удаление номера + Реализовано: просмотр и удаление SMS - Необходим рефакторинг (убрать повторяющийся код в JS), оптимизировать - Объединить запросы в D в модули (подпапки)
This commit is contained in:
parent
de17e88d37
commit
ab4b8c6bad
20 changed files with 467 additions and 33 deletions
|
@ -23,6 +23,10 @@ import requests.updatenumber;
|
|||
import requests.addnumber;
|
||||
import requests.delnumber;
|
||||
import requests.writenumber;
|
||||
import requests.smsnumbers;
|
||||
import requests.listsms;
|
||||
import requests.viewsms;
|
||||
import requests.delsms;
|
||||
|
||||
static ServerInfo serverInfo;
|
||||
|
||||
|
@ -200,6 +204,18 @@ void postReq(HTTPServerRequest req, HTTPServerResponse res) {
|
|||
case "delnumber":
|
||||
delNumber(req, res);
|
||||
break;
|
||||
case "smsnumbers":
|
||||
smsNumbers(req, res);
|
||||
break;
|
||||
case "listsms":
|
||||
listSMS(req, res);
|
||||
break;
|
||||
case "viewsms":
|
||||
viewSMS(req, res);
|
||||
break;
|
||||
case "delsms":
|
||||
delSMS(req, res);
|
||||
break;
|
||||
default:
|
||||
res.redirect("/");
|
||||
}
|
||||
|
|
|
@ -200,3 +200,96 @@ bool sqlInsertNumber(NumberDB number) {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
SMSDB[] sqlGetSMSNumbers() {
|
||||
SMSDB[] numbers;
|
||||
try {
|
||||
auto queryResult = pgsql.sql(
|
||||
"select distinct da_to from da_sms"
|
||||
);
|
||||
foreach (row; queryResult) {
|
||||
SMSDB data;
|
||||
|
||||
data.to = row["da_to"];
|
||||
|
||||
numbers ~= data;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
|
||||
}
|
||||
|
||||
return numbers;
|
||||
}
|
||||
|
||||
SMSDB[] sqlGetListSMS(string to) {
|
||||
SMSDB[] sms;
|
||||
try {
|
||||
auto queryResult = pgsql.sql(
|
||||
"select
|
||||
da_id,
|
||||
to_char(da_date, 'YYYY.MM.DD HH24:MI:SS') da_date,
|
||||
da_to,
|
||||
da_from,
|
||||
da_text
|
||||
from da_sms
|
||||
where da_to = ?
|
||||
order by da_date desc",
|
||||
to
|
||||
);
|
||||
foreach (row; queryResult) {
|
||||
SMSDB data;
|
||||
|
||||
data.id = row["da_id"].to!int;
|
||||
data.date = row["da_date"];
|
||||
data.to = row["da_to"];
|
||||
data.from = row["da_from"];
|
||||
data.text = row["da_text"];
|
||||
|
||||
sms ~= data;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
|
||||
}
|
||||
|
||||
return sms;
|
||||
}
|
||||
|
||||
SMSDB sqlGetSMS(int idsms) {
|
||||
SMSDB data;
|
||||
try {
|
||||
auto queryResult = pgsql.sql(
|
||||
"select
|
||||
da_id,
|
||||
to_char(da_date, 'YYYY.MM.DD HH24:MI:SS') da_date,
|
||||
da_to,
|
||||
da_from,
|
||||
da_text
|
||||
from da_sms
|
||||
where da_id = ?",
|
||||
idsms
|
||||
);
|
||||
foreach (row; queryResult) {
|
||||
data.id = row["da_id"].to!int;
|
||||
data.date = row["da_date"];
|
||||
data.to = row["da_to"];
|
||||
data.from = row["da_from"];
|
||||
data.text = row["da_text"];
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
bool sqlDeleteSMS(int idsms) {
|
||||
try {
|
||||
pgsql.sql(
|
||||
"delete from da_sms where da_id = ?", idsms
|
||||
);
|
||||
} catch (Exception e) {
|
||||
log.e("Ошибка удаления SMS в БД. " ~ e.msg);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
19
source/requests/delsms.d
Normal file
19
source/requests/delsms.d
Normal file
|
@ -0,0 +1,19 @@
|
|||
module requests.delsms;
|
||||
|
||||
import vibe.vibe;
|
||||
import response;
|
||||
import structures;
|
||||
import data;
|
||||
import singlog;
|
||||
|
||||
void delSMS(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
auto jsr = req.json;
|
||||
int idsms = jsr["id"].get!int;
|
||||
|
||||
if (!sqlDeleteSMS(idsms)) {
|
||||
res.send(true, "Не удалось удалить SMS");
|
||||
return;
|
||||
}
|
||||
|
||||
res.send();
|
||||
}
|
10
source/requests/listsms.d
Normal file
10
source/requests/listsms.d
Normal file
|
@ -0,0 +1,10 @@
|
|||
module requests.listsms;
|
||||
|
||||
import vibe.vibe;
|
||||
import response;
|
||||
import data;
|
||||
|
||||
void listSMS(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
auto jsr = req.json;
|
||||
res.writeJsonBody(sqlGetListSMS(jsr["to"].get!string).serializeToJson());
|
||||
}
|
15
source/requests/smsnumbers.d
Normal file
15
source/requests/smsnumbers.d
Normal file
|
@ -0,0 +1,15 @@
|
|||
module requests.smsnumbers;
|
||||
|
||||
import vibe.vibe;
|
||||
import response;
|
||||
import data;
|
||||
import singlog;
|
||||
|
||||
void smsNumbers(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
// auto jsr = req.json;
|
||||
// bool edit = true;
|
||||
// auto dataNumber = sqlGetDataNumber(jsr["number"].get!string);
|
||||
// auto groups = sqlGetGroups();
|
||||
auto numbers = sqlGetSMSNumbers();
|
||||
render!("sms-numbers.dt", numbers)(res);
|
||||
}
|
|
@ -6,8 +6,34 @@ import data;
|
|||
import singlog;
|
||||
import structures;
|
||||
|
||||
import std.regex;
|
||||
|
||||
void updateNumber(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
NumberDB number = deserializeJson!NumberDB(req.json);
|
||||
|
||||
// const string pattern_number = r"^\+7\d{10}$";
|
||||
// auto regular_number = regex(pattern_number, "g");
|
||||
|
||||
if (!number.number.matchFirst(regex(r"^\+7\d{10}$", "g"))) {
|
||||
res.send(true, "Номер не соответствует формату +7XXXXXXXXXX");
|
||||
return;
|
||||
}
|
||||
|
||||
if (number.all_cc < 0) {
|
||||
res.send(true, "Общее количество звонков не может быть отрицательным");
|
||||
return;
|
||||
}
|
||||
|
||||
if (number.white_cc < 0) {
|
||||
res.send(true, "Белое количество звонков не может быть отрицательным");
|
||||
return;
|
||||
}
|
||||
|
||||
if (number.black_cc < 0) {
|
||||
res.send(true, "Черное количество звонков не может быть отрицательным");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sqlUpdateNumber(number)) {
|
||||
res.send(true, "Не удалось обновить номер");
|
||||
return;
|
||||
|
|
12
source/requests/viewsms.d
Normal file
12
source/requests/viewsms.d
Normal file
|
@ -0,0 +1,12 @@
|
|||
module requests.viewsms;
|
||||
|
||||
import vibe.vibe;
|
||||
import response;
|
||||
import data;
|
||||
import singlog;
|
||||
|
||||
void viewSMS(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
auto jsr = req.json;
|
||||
auto dataSMS = sqlGetSMS(jsr["id"].to!int);
|
||||
render!("view-sms.dt", dataSMS)(res);
|
||||
}
|
|
@ -6,8 +6,34 @@ import structures;
|
|||
import data;
|
||||
import singlog;
|
||||
|
||||
import std.regex;
|
||||
|
||||
void writeNumber(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
NumberDB number = deserializeJson!NumberDB(req.json);
|
||||
|
||||
// const string pattern_number = r"^\+7\d{10}$";
|
||||
// auto regular_number = regex(r"^\+7\d{10}$", "g");
|
||||
|
||||
if (!number.number.matchFirst(regex(r"^\+7\d{10}$", "g"))) {
|
||||
res.send(true, "Номер не соответствует формату +7XXXXXXXXXX");
|
||||
return;
|
||||
}
|
||||
|
||||
if (number.all_cc < 0) {
|
||||
res.send(true, "Общее количество звонков не может быть отрицательным");
|
||||
return;
|
||||
}
|
||||
|
||||
if (number.white_cc < 0) {
|
||||
res.send(true, "Белое количество звонков не может быть отрицательным");
|
||||
return;
|
||||
}
|
||||
|
||||
if (number.black_cc < 0) {
|
||||
res.send(true, "Черное количество звонков не может быть отрицательным");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sqlInsertNumber(number)) {
|
||||
res.send(true, "Не удалось записать номер");
|
||||
return;
|
||||
|
|
|
@ -36,3 +36,11 @@ struct NumberDB {
|
|||
int black_cc;
|
||||
string comment;
|
||||
}
|
||||
|
||||
struct SMSDB {
|
||||
int id;
|
||||
string date;
|
||||
string to;
|
||||
string from;
|
||||
string text;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module version_;
|
||||
|
||||
enum dasterVersion = "v0.0.4";
|
||||
enum dasterVersion = "v0.0.5";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue