Работает обработка ссылок на таблицы с численностью

This commit is contained in:
2024-09-06 14:11:38 +03:00
parent 04374fef40
commit 2be45826c1
1698 changed files with 138656 additions and 174 deletions

View File

@ -9,6 +9,8 @@ use PDO;
final class Database
{
private PDO $pdo;
public const FILE_ADD_RECORDING ='not-recorded-in-db.yaml';
private const ERR_NO_CONNECT = "HY000";
private static $logfile = 'log/database.log';
private DatabaseConfig $databaseConfig;
private DatabaseLogger $logger;
@ -48,13 +50,11 @@ final class Database
}
/**
* Выборка данных из базы
* @param string $sql
* SQL-запрос
* @param array $params
* Параметры запроса
* @param string $sql SQL-запрос
* @param array $params Параметры запроса
* @return array
*/
public function select(string $sql, array $params = []) : array
public function select(string $sql, array $params = []): array
{
try {
$stmt = $this->pdo->prepare($sql);
@ -74,13 +74,11 @@ final class Database
}
/**
* Добавление данных в базу
* @param string $sql
* SQL-запрос
* @param array $params
* Параметры запроса
* @param string $sql SQL-запрос
* @param array $params Параметры запроса
* @return void
*/
public function insert(string $sql, array $params)
public function insert(string $sql, array $params): void
{
try {
$stmt = $this->pdo->prepare($sql);
@ -100,21 +98,23 @@ final class Database
$message = "Ошибка запроса:" . $e->getMessage();
$this->logger->log($message);
// При ошибке запроса сохраняем валидные данные в yaml-файл
if ($e->getCode() === "HY000") {
if ($e->getCode() === self::ERR_NO_CONNECT) {
$yaml = Yaml::dump($params);
file_put_contents('not-recorded-in-db.yaml', $yaml, FILE_APPEND);
file_put_contents(
self::FILE_ADD_RECORDING,
$yaml,
FILE_APPEND
);
}
}
}
/**
* Обновление данных в базе
* @param string $sql
* SQL-запрос
* @param array $params
* Параметры запроса
* @param string $sql SQL-запрос
* @param array $params Параметры запроса
* @return void
*/
public function update(string $sql, array $params)
public function update(string $sql, array $params): void
{
try {
$stmt = $this->pdo->prepare($sql);

View File

@ -24,7 +24,7 @@ final class DatabaseConfig
$this->_password = $config['DB_PASSWORD'];
}
private function getDataEnv(string $db) : array
private function getDataEnv(string $db): array
{
$envVars = parse_ini_file('.env', true);
$db = strtoupper($db);
@ -42,7 +42,7 @@ final class DatabaseConfig
return $this->_dbname;
}
public function getDsn() : string
public function getDsn(): string
{
return $this->_driver.":host=".$this->_host
.";dbname=".$this->_dbname
@ -50,12 +50,12 @@ final class DatabaseConfig
.";port=".$this->_port;
}
public function getUsername() : string
public function getUsername(): string
{
return $this->_username;
}
public function getPassword() : string
public function getPassword(): string
{
return $this->_password;
}

View File

@ -3,11 +3,12 @@ namespace ContingentParser\Database;
use NilPortugues\Sql\QueryBuilder\Builder\GenericBuilder;
class DatabaseFacade
final class DatabaseFacade
{
private GenericBuilder $builder;
private Database $opendata;
private Database $niimko;
public const FILE_ADD_RECORDING = Database::FILE_ADD_RECORDING;
private array $specialties;
private array $universities;
/**
@ -24,7 +25,7 @@ class DatabaseFacade
* Извлечение URL сайтов из базы данных niimko
* @return array
*/
public function getSitesFromNiimko() : array
public function getSitesFromNiimko(): array
{
/*
SELECT kod AS org_id, site FROM niimko.s_vuzes
@ -53,7 +54,7 @@ class DatabaseFacade
* Сайты, у которых устаревшие URL
* @return array
*/
public function getSitesFromMiccedu(array $params) : array
public function getSitesFromMiccedu(array $params): array
{
/*
SELECT site, vuzkod AS org_id FROM opendata.miccedu_monitoring
@ -86,7 +87,7 @@ class DatabaseFacade
* Массив записей численности по специальностям
* @return void
*/
public function insertContingent(array $contingent) : void
public function insertContingent(array $contingent): void
{
/*
INSERT INTO sveden_education_contingent
@ -116,7 +117,7 @@ class DatabaseFacade
* Публичное получение специальностей
* @return array
*/
public function specialties() : array
public function specialties(): array
{
return $this->specialties ? $this->specialties : [];
}
@ -124,7 +125,7 @@ class DatabaseFacade
* Публичное получение id вузов, занесенных в базу opendata
* @return array
*/
public function universities() : array
public function universities(): array
{
return $this->universities ? $this->universities : [];
}
@ -132,7 +133,7 @@ class DatabaseFacade
* Извлечение кодов специальности из базы данных niimko
* @return array
*/
private function getSpecialties() : array
private function getSpecialties(): array
{
/*
SELECT id AS spec_id, kod AS spec_code FROM niimko.s_specs
@ -155,7 +156,7 @@ class DatabaseFacade
* Извлечение id вузов, занесенных в базу opendata
* @return array
*/
private function getUniversities() : array
private function getUniversities(): array
{
/*
SELECT DISTINCT org_id FROM sveden_education_contingent
@ -180,7 +181,7 @@ class DatabaseFacade
* Массив [['org_id' => val1, 'site' => val1,],...]
* @return void
*/
public function updateSitesOpendata(array $params) : void
public function updateSitesOpendata(array $params): void
{
/*
UPDATE niimko.s_vuzes