daster/source/data.d

203 lines
5.2 KiB
D
Raw Normal View History

module data;
import pgdb;
import singlog;
import structures;
import std.conv;
GroupDB[] sqlGetListGroups() {
GroupDB[] groups;
try {
auto queryResult = pgsql.sql(
"select distinct
dan.da_group,
dag.da_comment
from da_numbers dan
left join da_groups dag ON dag.da_name = dan.da_group"
);
foreach (row; queryResult) {
GroupDB data;
data.name = row["da_group"];
data.comment = row["da_comment"];
groups ~= data;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return groups;
}
NumberDB[] sqlGetListNumbers(string group) {
NumberDB[] numbers;
try {
auto queryResult = pgsql.sql(
"select
dan.da_number,
dal.da_comment da_list,
dan.da_all_cc,
dan.da_white_cc,
dan.da_black_cc,
dan.da_comment
from da_numbers dan
left join da_lists dal on dal.da_name = dan.da_list
where dan.da_group = ?
order by dan.da_number",
group
);
foreach (row; queryResult) {
NumberDB data;
data.number = row["da_number"];
data.list = row["da_list"];
data.all_cc = row["da_all_cc"].to!int;
data.white_cc = row["da_white_cc"].to!int;
data.black_cc = row["da_black_cc"].to!int;
data.comment = row["da_comment"];
numbers ~= data;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return numbers;
}
NumberDB sqlGetDataNumber(string number) {
NumberDB data;
try {
auto queryResult = pgsql.sql(
"select
da_number,
da_group,
da_list,
da_all_cc,
da_white_cc,
da_black_cc,
da_comment
from da_numbers
where da_number = ?",
number
);
foreach (row; queryResult) {
data.number = row["da_number"];
data.group = row["da_group"];
data.list = row["da_list"];
data.all_cc = row["da_all_cc"].to!int;
data.white_cc = row["da_white_cc"].to!int;
data.black_cc = row["da_black_cc"].to!int;
data.comment = row["da_comment"];
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return data;
}
GroupDB[] sqlGetGroups() {
GroupDB[] groups;
try {
auto queryResult = pgsql.sql(
"select da_name, da_comment from da_groups"
);
foreach (row; queryResult) {
GroupDB data;
data.name = row["da_name"];
data.comment = row["da_comment"];
groups ~= data;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return groups;
}
ListDB[] sqlGetLists() {
ListDB[] lists;
try {
auto queryResult = pgsql.sql(
"select da_name, da_comment from da_lists"
);
foreach (row; queryResult) {
ListDB data;
data.name = row["da_name"];
data.comment = row["da_comment"];
lists ~= data;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
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;
}