109 lines
3.5 KiB
PHP
109 lines
3.5 KiB
PHP
<?php
|
|
namespace EdgeManager\EDataCapture;
|
|
|
|
class ENodeConfigure {
|
|
function __construct(
|
|
protected $dbconn,
|
|
protected $post = NULL,
|
|
protected $get = NULL
|
|
) {}
|
|
|
|
function add_node() {
|
|
$exists = pg_query(sprintf(
|
|
"SELECT EXISTS(
|
|
SELECT 1 FROM hf_mes_scada_data_capture_node_configure WHERE code='%s'
|
|
)", $this -> post['code']
|
|
));
|
|
if (pg_fetch_assoc($exists)['exists'] == 't') {
|
|
return "REPLICATED";
|
|
}
|
|
|
|
$table_name = "hf_mes_scada_data_capture_node_data_" . $this -> post['working_subclass'];
|
|
|
|
pg_query($this -> dbconn, "BEGIN");
|
|
$res[] = pg_query($this -> dbconn, sprintf(
|
|
"CREATE TABLE IF NOT EXISTS %s (
|
|
id serial8,
|
|
code text references hf_mes_scada_data_capture_node_configure(code),
|
|
v_string text,
|
|
v_int int,
|
|
v_float float8,
|
|
v_bool bool,
|
|
device_code text,
|
|
batch text,
|
|
capture_time timestamp NOT NULL DEFAULT NOW()
|
|
)", $table_name
|
|
));
|
|
$res[] = pg_insert(
|
|
$this -> dbconn,
|
|
'hf_mes_scada_data_capture_node_configure',
|
|
$this -> post
|
|
);
|
|
// 检查一下,如果超表已经有了就不要尝试重复创建了
|
|
$table_exists = pg_query(sprintf(
|
|
"SELECT *
|
|
FROM timescaledb_information.hypertables
|
|
WHERE hypertable_name = '%s'
|
|
", $table_name
|
|
));
|
|
if (!in_array($table_name, pg_fetch_all_columns($table_exists, 1))) {
|
|
$res[] = pg_query($this -> dbconn, sprintf("SELECT create_hypertable('%s', 'capture_time')", $table_name));
|
|
$res[] = pg_query($this -> dbconn, sprintf(
|
|
"CREATE INDEX ON %s (v_string, v_int, v_float, v_bool, capture_time DESC)
|
|
WHERE COALESCE(v_string, v_int::text, v_float::text, v_bool::text) IS NOT NULL
|
|
", $table_name
|
|
));
|
|
}
|
|
|
|
if (in_array(false, $res)) {
|
|
pg_query($this -> dbconn, "ROLLBACK");
|
|
return false;
|
|
} else {
|
|
pg_query($this -> dbconn, "COMMIT");
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function remove_node() {
|
|
pg_query($this -> dbconn, "BEGIN");
|
|
$res[] = pg_delete(
|
|
$this -> dbconn,
|
|
'hf_mes_scada_data_capture_node_configure',
|
|
$this -> post,
|
|
);
|
|
$exists = pg_query(sprintf(
|
|
"SELECT EXISTS(
|
|
SELECT 1 FROM hf_mes_scada_data_capture_node_configure WHERE code='%s'
|
|
)", $this -> post['working_subclass']
|
|
));
|
|
if (pg_fetch_assoc($exists)['exists'] == 'f') {
|
|
$res[] = pg_query(sprintf(
|
|
"DROP TABLE hf_mes_scada_data_capture_node_data_%s",
|
|
$this -> post['working_subclass']
|
|
));
|
|
}
|
|
|
|
if (in_array(false, $res)) {
|
|
pg_query($this -> dbconn, "ROLLBACK");
|
|
return false;
|
|
} else {
|
|
pg_query($this -> dbconn, "COMMIT");
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function update_node() {
|
|
return pg_update(
|
|
$this -> dbconn,
|
|
'hf_mes_scada_data_capture_node_configure',
|
|
$this -> post,
|
|
['code' => $this -> post['code']]
|
|
);
|
|
}
|
|
|
|
function get_nodes() {
|
|
$res = pg_query($this -> dbconn, "SELECT * FROM hf_mes_scada_data_capture_node_configure");
|
|
return pg_fetch_all($res);
|
|
}
|
|
}
|