+ Реализовано: обновление/добавление/удаление номера
+ Добавлена кнопка обновления активной вкладки
- Доработать проверки на обновление/добавление/удаление номера
This commit is contained in:
Alexander Zhirov 2023-06-02 00:36:21 +03:00
parent c0290cd753
commit de17e88d37
13 changed files with 283 additions and 56 deletions

View file

@ -19,6 +19,10 @@ import structures;
import requests.listsgroups;
import requests.groupnumbers;
import requests.editnumber;
import requests.updatenumber;
import requests.addnumber;
import requests.delnumber;
import requests.writenumber;
static ServerInfo serverInfo;
@ -181,24 +185,21 @@ void postReq(HTTPServerRequest req, HTTPServerResponse res) {
// case "logout":
// logout(req, res);
// break;
// case "numbers":
// numbers(req, res);
// break;
// case "add":
// addNumber(req, res);
// break;
// case "write":
// writeNumber(req, res);
// break;
case "addnumber":
addNumber(req, res);
break;
case "writenumber":
writeNumber(req, res);
break;
case "editnumber":
editNumber(req, res);
break;
// case "update":
// updateNumber(req, res);
// break;
// case "remove":
// removeNumber(req, res);
// break;
case "updatenumber":
updateNumber(req, res);
break;
case "delnumber":
delNumber(req, res);
break;
default:
res.redirect("/");
}

View file

@ -6,7 +6,7 @@ import structures;
import std.conv;
GroupDB[] getListGroups() {
GroupDB[] sqlGetListGroups() {
GroupDB[] groups;
try {
auto queryResult = pgsql.sql(
@ -31,7 +31,7 @@ GroupDB[] getListGroups() {
return groups;
}
NumberDB[] getListNumbers(string group) {
NumberDB[] sqlGetListNumbers(string group) {
NumberDB[] numbers;
try {
auto queryResult = pgsql.sql(
@ -44,7 +44,8 @@ NumberDB[] getListNumbers(string group) {
dan.da_comment
from da_numbers dan
left join da_lists dal on dal.da_name = dan.da_list
where dan.da_group = ?",
where dan.da_group = ?
order by dan.da_number",
group
);
foreach (row; queryResult) {
@ -66,7 +67,7 @@ NumberDB[] getListNumbers(string group) {
return numbers;
}
NumberDB getDataNumber(string number) {
NumberDB sqlGetDataNumber(string number) {
NumberDB data;
try {
auto queryResult = pgsql.sql(
@ -98,7 +99,7 @@ NumberDB getDataNumber(string number) {
return data;
}
GroupDB[] getGroups() {
GroupDB[] sqlGetGroups() {
GroupDB[] groups;
try {
auto queryResult = pgsql.sql(
@ -119,7 +120,7 @@ GroupDB[] getGroups() {
return groups;
}
ListDB[] getLists() {
ListDB[] sqlGetLists() {
ListDB[] lists;
try {
auto queryResult = pgsql.sql(
@ -139,3 +140,63 @@ ListDB[] getLists() {
return lists;
}
bool sqlUpdateNumber(NumberDB number) {
try {
pgsql.sql(
"update da_numbers set
da_group = ?,
da_list = ?,
da_all_cc = ?,
da_white_cc = ?,
da_black_cc = ?,
da_comment = ?
where da_number = ?",
number.group,
number.list,
number.all_cc,
number.white_cc,
number.black_cc,
number.comment,
number.number
);
} catch (Exception e) {
log.e("Ошибка обновления номера в БД. " ~ e.msg);
return false;
}
return true;
}
bool sqlDeleteNumber(string number) {
try {
pgsql.sql(
"delete from da_numbers where da_number = ?", number
);
} catch (Exception e) {
log.e("Ошибка удаления номера в БД. " ~ e.msg);
return false;
}
return true;
}
bool sqlInsertNumber(NumberDB number) {
try {
pgsql.sql(
"insert into da_numbers
(da_number, da_group, da_list, da_all_cc, da_white_cc, da_black_cc, da_comment)
values
(?, ?, ?, ?, ?, ?, ?)",
number.number,
number.group,
number.list,
number.all_cc,
number.white_cc,
number.black_cc,
number.comment
);
} catch (Exception e) {
log.error("Ошибка добавления номера телефона в БД. " ~ e.msg);
return false;
}
return true;
}

View file

@ -0,0 +1,18 @@
module requests.addnumber;
import vibe.vibe;
import response;
import structures;
import data;
import singlog;
void addNumber(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
bool edit = false;
NumberDB dataNumber;
dataNumber.group = jsr["group"].get!string;
// auto dataNumber = sqlGetDataNumber(jsr["number"].get!string);
auto groups = sqlGetGroups();
auto lists = sqlGetLists();
render!("edit-number.dt", edit, dataNumber, groups, lists)(res);
}

View file

@ -0,0 +1,24 @@
module requests.delnumber;
import vibe.vibe;
import response;
import structures;
import data;
import singlog;
void delNumber(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
string number = jsr["number"].get!string;
if (!number.length) {
res.send(true, "Номер не может быть пуст");
return;
}
if (!sqlDeleteNumber(number)) {
res.send(true, "Не удалось удалить номер");
return;
}
res.send();
}

View file

@ -8,8 +8,8 @@ import singlog;
void editNumber(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
bool edit = true;
auto dataNumber = getDataNumber(jsr["number"].get!string);
auto groups = getGroups();
auto lists = getLists();
auto dataNumber = sqlGetDataNumber(jsr["number"].get!string);
auto groups = sqlGetGroups();
auto lists = sqlGetLists();
render!("edit-number.dt", edit, dataNumber, groups, lists)(res);
}

View file

@ -7,5 +7,5 @@ import singlog;
void groupNumbers(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
res.writeJsonBody(getListNumbers(jsr["group"].get!string).serializeToJson());
res.writeJsonBody(sqlGetListNumbers(jsr["group"].get!string).serializeToJson());
}

View file

@ -5,6 +5,6 @@ import response;
import data;
void listsGroups(HTTPServerRequest req, HTTPServerResponse res) {
auto listGroups = getListGroups();
auto listGroups = sqlGetListGroups();
render!("group-numbers-list.dt", listGroups)(res);
}

View file

@ -0,0 +1,16 @@
module requests.updatenumber;
import vibe.vibe;
import response;
import data;
import singlog;
import structures;
void updateNumber(HTTPServerRequest req, HTTPServerResponse res) {
NumberDB number = deserializeJson!NumberDB(req.json);
if (!sqlUpdateNumber(number)) {
res.send(true, "Не удалось обновить номер");
return;
}
res.send();
}

View file

@ -0,0 +1,16 @@
module requests.writenumber;
import vibe.vibe;
import response;
import structures;
import data;
import singlog;
void writeNumber(HTTPServerRequest req, HTTPServerResponse res) {
NumberDB number = deserializeJson!NumberDB(req.json);
if (!sqlInsertNumber(number)) {
res.send(true, "Не удалось записать номер");
return;
}
res.send();
}

View file

@ -1,3 +1,3 @@
module version_;
enum dasterVersion = "v0.0.2";
enum dasterVersion = "v0.0.4";