From b77349cfe64f51023720acdaadd689b3ffc75ead Mon Sep 17 00:00:00 2001 From: wqy Date: Sat, 27 Aug 2022 11:49:43 +0800 Subject: [PATCH 1/6] Add epanet input schema --- sql/base_create.sql | 25 ++++++++++++++++ sql/base_drop.sql | 11 +++++++ sql/section_create/1.title.sql | 6 ++++ sql/section_create/10.status.sql | 29 ++++++++++++++++++ sql/section_create/11.patterns.sql | 7 +++++ sql/section_create/12.curves.sql | 8 +++++ sql/section_create/13.controls.sql | 30 +++++++++++++++++++ sql/section_create/14.rules.sql | 6 ++++ sql/section_create/15.energy.sql | 24 +++++++++++++++ sql/section_create/16.emitters.sql | 7 +++++ sql/section_create/17.quality.sql | 7 +++++ sql/section_create/18.sources.sql | 11 +++++++ sql/section_create/19.reactions.sql | 42 +++++++++++++++++++++++++++ sql/section_create/2.junctions.sql | 9 ++++++ sql/section_create/20.mixing.sql | 10 +++++++ sql/section_create/21.times.sql | 9 ++++++ sql/section_create/22.report.sql | 9 ++++++ sql/section_create/23.options.sql | 9 ++++++ sql/section_create/24.coordinates.sql | 10 +++++++ sql/section_create/25.vertices.sql | 8 +++++ sql/section_create/26.labels.sql | 9 ++++++ sql/section_create/27.backdrop.sql | 6 ++++ sql/section_create/28.end.sql | 1 + sql/section_create/3.reservoirs.sql | 8 +++++ sql/section_create/4.tanks.sql | 16 ++++++++++ sql/section_create/5.pipes.sql | 15 ++++++++++ sql/section_create/6.pumps.sql | 32 ++++++++++++++++++++ sql/section_create/7.valves.sql | 14 +++++++++ sql/section_create/8.tags.sql | 13 +++++++++ sql/section_create/9.demands.sql | 9 ++++++ sql/section_drop/1.title.sql | 3 ++ sql/section_drop/10.status.sql | 13 +++++++++ sql/section_drop/11.patterns.sql | 3 ++ sql/section_drop/12.curves.sql | 3 ++ sql/section_drop/13.controls.sql | 9 ++++++ sql/section_drop/14.rules.sql | 3 ++ sql/section_drop/15.energy.sql | 9 ++++++ sql/section_drop/16.emitters.sql | 3 ++ sql/section_drop/17.quality.sql | 3 ++ sql/section_drop/18.sources.sql | 5 ++++ sql/section_drop/19.reactions.sql | 19 ++++++++++++ sql/section_drop/2.junctions.sql | 3 ++ sql/section_drop/20.mixing.sql | 5 ++++ sql/section_drop/21.times.sql | 3 ++ sql/section_drop/22.report.sql | 3 ++ sql/section_drop/23.options.sql | 3 ++ sql/section_drop/24.coordinates.sql | 7 +++++ sql/section_drop/25.vertices.sql | 3 ++ sql/section_drop/26.labels.sql | 3 ++ sql/section_drop/27.backdrop.sql | 3 ++ sql/section_drop/28.end.sql | 1 + sql/section_drop/3.reservoirs.sql | 3 ++ sql/section_drop/4.tanks.sql | 5 ++++ sql/section_drop/5.pipes.sql | 5 ++++ sql/section_drop/6.pumps.sql | 11 +++++++ sql/section_drop/7.valves.sql | 5 ++++ sql/section_drop/8.tags.sql | 5 ++++ sql/section_drop/9.demands.sql | 3 ++ 58 files changed, 544 insertions(+) create mode 100644 sql/base_create.sql create mode 100644 sql/base_drop.sql create mode 100644 sql/section_create/1.title.sql create mode 100644 sql/section_create/10.status.sql create mode 100644 sql/section_create/11.patterns.sql create mode 100644 sql/section_create/12.curves.sql create mode 100644 sql/section_create/13.controls.sql create mode 100644 sql/section_create/14.rules.sql create mode 100644 sql/section_create/15.energy.sql create mode 100644 sql/section_create/16.emitters.sql create mode 100644 sql/section_create/17.quality.sql create mode 100644 sql/section_create/18.sources.sql create mode 100644 sql/section_create/19.reactions.sql create mode 100644 sql/section_create/2.junctions.sql create mode 100644 sql/section_create/20.mixing.sql create mode 100644 sql/section_create/21.times.sql create mode 100644 sql/section_create/22.report.sql create mode 100644 sql/section_create/23.options.sql create mode 100644 sql/section_create/24.coordinates.sql create mode 100644 sql/section_create/25.vertices.sql create mode 100644 sql/section_create/26.labels.sql create mode 100644 sql/section_create/27.backdrop.sql create mode 100644 sql/section_create/28.end.sql create mode 100644 sql/section_create/3.reservoirs.sql create mode 100644 sql/section_create/4.tanks.sql create mode 100644 sql/section_create/5.pipes.sql create mode 100644 sql/section_create/6.pumps.sql create mode 100644 sql/section_create/7.valves.sql create mode 100644 sql/section_create/8.tags.sql create mode 100644 sql/section_create/9.demands.sql create mode 100644 sql/section_drop/1.title.sql create mode 100644 sql/section_drop/10.status.sql create mode 100644 sql/section_drop/11.patterns.sql create mode 100644 sql/section_drop/12.curves.sql create mode 100644 sql/section_drop/13.controls.sql create mode 100644 sql/section_drop/14.rules.sql create mode 100644 sql/section_drop/15.energy.sql create mode 100644 sql/section_drop/16.emitters.sql create mode 100644 sql/section_drop/17.quality.sql create mode 100644 sql/section_drop/18.sources.sql create mode 100644 sql/section_drop/19.reactions.sql create mode 100644 sql/section_drop/2.junctions.sql create mode 100644 sql/section_drop/20.mixing.sql create mode 100644 sql/section_drop/21.times.sql create mode 100644 sql/section_drop/22.report.sql create mode 100644 sql/section_drop/23.options.sql create mode 100644 sql/section_drop/24.coordinates.sql create mode 100644 sql/section_drop/25.vertices.sql create mode 100644 sql/section_drop/26.labels.sql create mode 100644 sql/section_drop/27.backdrop.sql create mode 100644 sql/section_drop/28.end.sql create mode 100644 sql/section_drop/3.reservoirs.sql create mode 100644 sql/section_drop/4.tanks.sql create mode 100644 sql/section_drop/5.pipes.sql create mode 100644 sql/section_drop/6.pumps.sql create mode 100644 sql/section_drop/7.valves.sql create mode 100644 sql/section_drop/8.tags.sql create mode 100644 sql/section_drop/9.demands.sql diff --git a/sql/base_create.sql b/sql/base_create.sql new file mode 100644 index 0000000..4ee4fde --- /dev/null +++ b/sql/base_create.sql @@ -0,0 +1,25 @@ +CREATE TYPE _NODE_TYPE AS ENUM ('JUNCTION', 'RESERVOIR', 'TANK'); + +CREATE TYPE _LINK_TYPE AS ENUM ('PIPE', 'PUMP', 'VALVE'); + +CREATE TABLE _NODE +( + ID VARCHAR(32) PRIMARY KEY +, Type _NODE_TYPE NOT NULL +); + +CREATE TABLE _LINK +( + ID VARCHAR(32) PRIMARY KEY +, Type _LINK_TYPE NOT NULL +); + +CREATE TABLE _CURVE +( + ID VARCHAR(32) PRIMARY KEY +); + +CREATE TABLE _PATTERN +( + ID VARCHAR(32) PRIMARY KEY +); diff --git a/sql/base_drop.sql b/sql/base_drop.sql new file mode 100644 index 0000000..3b57bb0 --- /dev/null +++ b/sql/base_drop.sql @@ -0,0 +1,11 @@ +DROP TABLE IF EXISTS _PATTERN; + +DROP TABLE IF EXISTS _CURVE; + +DROP TABLE IF EXISTS _LINK; + +DROP TABLE IF EXISTS _NODE; + +DROP TYPE IF EXISTS _LINK_TYPE; + +DROP TYPE IF EXISTS _NODE_TYPE; diff --git a/sql/section_create/1.title.sql b/sql/section_create/1.title.sql new file mode 100644 index 0000000..0a48eff --- /dev/null +++ b/sql/section_create/1.title.sql @@ -0,0 +1,6 @@ +-- [TITLE] + +CREATE TABLE TITLE +( + Value TEXT +); diff --git a/sql/section_create/10.status.sql b/sql/section_create/10.status.sql new file mode 100644 index 0000000..34da1f7 --- /dev/null +++ b/sql/section_create/10.status.sql @@ -0,0 +1,29 @@ +-- [STATUS] + +CREATE TYPE STATUS_PIPE_PUMP_STATUS AS ENUM ('OPEN', 'CLOSED'); + +CREATE TABLE STATUS_PIPE +( + ID VARCHAR(32) PRIMARY KEY REFERENCES PIPES(ID) +, Status STATUS_PIPE_PUMP_STATUS NOT NULL +); + +CREATE TABLE STATUS_PUMP +( + ID VARCHAR(32) PRIMARY KEY REFERENCES PUMPS(ID) +, Status STATUS_PIPE_PUMP_STATUS NOT NULL +); + +CREATE TYPE STATUS_VALVE_STATUS AS ENUM ('OPEN', 'CLOSED', 'ACTIVE'); + +CREATE TABLE STATUS_VALVE +( + ID VARCHAR(32) PRIMARY KEY REFERENCES VALVES(ID) +, Status STATUS_VALVE_STATUS NOT NULL +); + +CREATE TABLE STATUS_LINK +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Setting NUMERIC NOT NULL +); diff --git a/sql/section_create/11.patterns.sql b/sql/section_create/11.patterns.sql new file mode 100644 index 0000000..dfb23b0 --- /dev/null +++ b/sql/section_create/11.patterns.sql @@ -0,0 +1,7 @@ +-- [PATTERNS] + +CREATE TABLE PATTERNS +( + ID VARCHAR(32) REFERENCES _PATTERN(ID) NOT NULL +, Multipliers NUMERIC NOT NULL +); diff --git a/sql/section_create/12.curves.sql b/sql/section_create/12.curves.sql new file mode 100644 index 0000000..ac2460e --- /dev/null +++ b/sql/section_create/12.curves.sql @@ -0,0 +1,8 @@ +-- [CURVES] + +CREATE TABLE CURVES +( + ID VARCHAR(32) REFERENCES _CURVE(ID) NOT NULL +, X NUMERIC NOT NULL +, Y NUMERIC NOT NULL +); diff --git a/sql/section_create/13.controls.sql b/sql/section_create/13.controls.sql new file mode 100644 index 0000000..aa107eb --- /dev/null +++ b/sql/section_create/13.controls.sql @@ -0,0 +1,30 @@ +-- [CONTROLS] + +CREATE TYPE CONTROLS_1_PREP AS ENUM ('ABOVE', 'BELOW'); + +-- LINK linkID status IF NODE nodeID ABOVE / BELOW value +CREATE TABLE CONTROLS_1 +( + LinkID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Status TEXT NOT NULL -- OPEN / CLOSED, a pump speed setting, or a control valve setting +, NodeID VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +, Prep CONTROLS_1_PREP NOT NULL +, Value NUMERIC NOT NULL +); + +-- LINK linkID status AT TIME time +CREATE TABLE CONTROLS_2 +( + LinkID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Status TEXT NOT NULL -- OPEN / CLOSED, a pump speed setting, or a control valve setting +, Time INTERVAL HOUR +); + +-- LINK linkID status AT CLOCKTIME clocktime AM / PM +CREATE TABLE CONTROLS_3 +( + LinkID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Status TEXT NOT NULL -- OPEN / CLOSED, a pump speed setting, or a control valve setting +, ClockTimeHour INTERVAL HOUR -- get AM/PM from it +, ClockTimeMin INTERVAL MINUTE +); diff --git a/sql/section_create/14.rules.sql b/sql/section_create/14.rules.sql new file mode 100644 index 0000000..7d288ca --- /dev/null +++ b/sql/section_create/14.rules.sql @@ -0,0 +1,6 @@ +-- [RULES] + +CREATE TABLE RULES +( + Content TEXT PRIMARY KEY +); diff --git a/sql/section_create/15.energy.sql b/sql/section_create/15.energy.sql new file mode 100644 index 0000000..a73a3db --- /dev/null +++ b/sql/section_create/15.energy.sql @@ -0,0 +1,24 @@ +-- [ENERGY] + +CREATE TYPE ENERGY_PARAM AS ENUM ('PRICE', 'PATTERN', 'EFFIC'); + +-- GLOBAL PRICE / PATTERN / EFFIC value +CREATE TABLE ENERGY_GLOBAL +( + Param ENERGY_PARAM NOT NULL +, Value NUMERIC NOT NULL +); + +-- PUMP pumpID PRICE / PATTERN / EFFIC value +CREATE TABLE ENERGY_PUMP +( + ID VARCHAR(32) REFERENCES PUMPS(ID) NOT NULL +, Param ENERGY_PARAM NOT NULL +, Value NUMERIC NOT NULL +); + +-- DEMAND CHARGE value +CREATE TABLE ENERGY_DEMAND_CHARGE +( + Value NUMERIC NOT NULL +); diff --git a/sql/section_create/16.emitters.sql b/sql/section_create/16.emitters.sql new file mode 100644 index 0000000..b1fe8b4 --- /dev/null +++ b/sql/section_create/16.emitters.sql @@ -0,0 +1,7 @@ +-- [EMITTERS] + +CREATE TABLE EMITTERS +( + Junction VARCHAR(32) PRIMARY KEY REFERENCES JUNCTIONS(ID) +, Coefficient NUMERIC NOT NULL +); diff --git a/sql/section_create/17.quality.sql b/sql/section_create/17.quality.sql new file mode 100644 index 0000000..939e309 --- /dev/null +++ b/sql/section_create/17.quality.sql @@ -0,0 +1,7 @@ +-- [QUALITY] + +CREATE TABLE QUALITY +( + Node VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, InitialQual NUMERIC NOT NULL +); diff --git a/sql/section_create/18.sources.sql b/sql/section_create/18.sources.sql new file mode 100644 index 0000000..1c2ec64 --- /dev/null +++ b/sql/section_create/18.sources.sql @@ -0,0 +1,11 @@ +-- [SOURCES] + +CREATE TYPE SOURCES_TYPE AS ENUM ('CONCEN', 'MASS', 'FLOWPACED', 'SETPOINT'); + +CREATE TABLE SOURCES +( + Node VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, Type SOURCES_TYPE NOT NULL +, Strength NUMERIC NOT NULL +, TimePattern VARCHAR(32) REFERENCES _PATTERN(ID) +); diff --git a/sql/section_create/19.reactions.sql b/sql/section_create/19.reactions.sql new file mode 100644 index 0000000..0d8d13b --- /dev/null +++ b/sql/section_create/19.reactions.sql @@ -0,0 +1,42 @@ +-- [REACTIONS] + +CREATE TYPE REACTIONS_ORDER_PARAM AS ENUM ('BULK', 'WALL', 'TANK'); + +CREATE TABLE REACTIONS_ORDER +( + Key REACTIONS_ORDER_PARAM NOT NULL +, Value NUMERIC NOT NULL +); + +CREATE TYPE REACTIONS_GLOBAL_PARAM AS ENUM ('BULK', 'WALL'); + +CREATE TABLE REACTIONS_GLOBAL +( + Key REACTIONS_GLOBAL_PARAM NOT NULL +, Value NUMERIC NOT NULL +); + +CREATE TYPE REACTIONS_PIPE_PARAM AS ENUM ('BULK', 'WALL'); + +CREATE TABLE REACTIONS_PIPE +( + Key REACTIONS_PIPE_PARAM NOT NULL +, Pipe VARCHAR(32) REFERENCES PIPES(ID) NOT NULL +, Value NUMERIC NOT NULL +); + +CREATE TABLE REACTIONS_TANK +( + Tank VARCHAR(32) REFERENCES TANKS(ID) NOT NULL +, Value NUMERIC NOT NULL +); + +CREATE TABLE REACTIONS_LIMITING_POTENTIAL +( + Value NUMERIC NOT NULL +); + +CREATE TABLE REACTIONS_ROUGHNESS_CORRELATION +( + Value NUMERIC NOT NULL +); diff --git a/sql/section_create/2.junctions.sql b/sql/section_create/2.junctions.sql new file mode 100644 index 0000000..42ea2f3 --- /dev/null +++ b/sql/section_create/2.junctions.sql @@ -0,0 +1,9 @@ +-- [JUNCTIONS] + +CREATE TABLE JUNCTIONS +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, Elevation NUMERIC NOT NULL +, Demand NUMERIC +, Pattern VARCHAR(32) REFERENCES _PATTERN(ID) +); diff --git a/sql/section_create/20.mixing.sql b/sql/section_create/20.mixing.sql new file mode 100644 index 0000000..b6675bb --- /dev/null +++ b/sql/section_create/20.mixing.sql @@ -0,0 +1,10 @@ +-- [MIXING] + +CREATE TYPE MIXING_Model AS ENUM ('MIXED', '2COMP', 'FIFO', 'LIFO'); + +CREATE TABLE MIXING +( + Tank VARCHAR(32) PRIMARY KEY REFERENCES TANKS(ID) +, Model MIXING_Model NOT NULL +, Value NUMERIC +); diff --git a/sql/section_create/21.times.sql b/sql/section_create/21.times.sql new file mode 100644 index 0000000..a68e504 --- /dev/null +++ b/sql/section_create/21.times.sql @@ -0,0 +1,9 @@ +-- [TIMES] + +-- TODO: constraint + +CREATE TABLE TIMES +( + Key TEXT NOT NULL +, Value TEXT NOT NULL +); diff --git a/sql/section_create/22.report.sql b/sql/section_create/22.report.sql new file mode 100644 index 0000000..c2435d3 --- /dev/null +++ b/sql/section_create/22.report.sql @@ -0,0 +1,9 @@ +-- [REPORT] + +-- TODO: constraint + +CREATE TABLE REPORT +( + Key TEXT NOT NULL +, Value TEXT NOT NULL +); diff --git a/sql/section_create/23.options.sql b/sql/section_create/23.options.sql new file mode 100644 index 0000000..16d50a4 --- /dev/null +++ b/sql/section_create/23.options.sql @@ -0,0 +1,9 @@ +-- [OPTIONS] + +-- TODO: constraint + +CREATE TABLE OPTIONS +( + Key TEXT NOT NULL +, Value TEXT NOT NULL +); diff --git a/sql/section_create/24.coordinates.sql b/sql/section_create/24.coordinates.sql new file mode 100644 index 0000000..2bad5dc --- /dev/null +++ b/sql/section_create/24.coordinates.sql @@ -0,0 +1,10 @@ +-- [COORDINATES] + +CREATE TABLE COORDINATES +( + Node VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, Coord POINT NOT NULL DEFAULT(POINT(0.0, 0.0)) +); + +CREATE INDEX COORDINATES_SPGIST ON COORDINATES USING SPGIST(Coord); +CREATE INDEX COORDINATES_GIST ON COORDINATES USING GIST(Coord); diff --git a/sql/section_create/25.vertices.sql b/sql/section_create/25.vertices.sql new file mode 100644 index 0000000..3f509c6 --- /dev/null +++ b/sql/section_create/25.vertices.sql @@ -0,0 +1,8 @@ +-- [VERTICES] + +CREATE TABLE VERTICES +( + Link VARCHAR(32) REFERENCES _LINK(ID) NOT NULL +, X NUMERIC NOT NULL +, Y NUMERIC NOT NULL +); diff --git a/sql/section_create/26.labels.sql b/sql/section_create/26.labels.sql new file mode 100644 index 0000000..cf95e00 --- /dev/null +++ b/sql/section_create/26.labels.sql @@ -0,0 +1,9 @@ +-- [LABELS] + +CREATE TABLE LABELS +( + X NUMERIC NOT NULL +, Y NUMERIC NOT NULL +, Label TEXT NOT NULL +, AnchorNode VARCHAR(32) REFERENCES _NODE(ID) +); diff --git a/sql/section_create/27.backdrop.sql b/sql/section_create/27.backdrop.sql new file mode 100644 index 0000000..4216368 --- /dev/null +++ b/sql/section_create/27.backdrop.sql @@ -0,0 +1,6 @@ +-- [BACKDROP] + +CREATE TABLE BACKDROP +( + Content TEXT PRIMARY KEY +); diff --git a/sql/section_create/28.end.sql b/sql/section_create/28.end.sql new file mode 100644 index 0000000..3054ad0 --- /dev/null +++ b/sql/section_create/28.end.sql @@ -0,0 +1 @@ +-- [END] \ No newline at end of file diff --git a/sql/section_create/3.reservoirs.sql b/sql/section_create/3.reservoirs.sql new file mode 100644 index 0000000..476c793 --- /dev/null +++ b/sql/section_create/3.reservoirs.sql @@ -0,0 +1,8 @@ +-- [RESERVOIRS] + +CREATE TABLE RESERVOIRS +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, Head NUMERIC NOT NULL +, Pattern VARCHAR(32) REFERENCES _PATTERN(ID) +); diff --git a/sql/section_create/4.tanks.sql b/sql/section_create/4.tanks.sql new file mode 100644 index 0000000..df0bdf4 --- /dev/null +++ b/sql/section_create/4.tanks.sql @@ -0,0 +1,16 @@ +-- [TANKS] + +CREATE TYPE TANKS_OVERFLOW AS ENUM ('YES', 'NO'); + +CREATE TABLE TANKS +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, Elevation NUMERIC NOT NULL +, InitLevel NUMERIC NOT NULL +, MinLevel NUMERIC NOT NULL +, MaxLevel NUMERIC NOT NULL +, Diameter NUMERIC NOT NULL +, MinVol NUMERIC NOT NULL +, VolCurve VARCHAR(32) REFERENCES _CURVE(ID) +, Overflow TANKS_OVERFLOW +); diff --git a/sql/section_create/5.pipes.sql b/sql/section_create/5.pipes.sql new file mode 100644 index 0000000..fb1dc2d --- /dev/null +++ b/sql/section_create/5.pipes.sql @@ -0,0 +1,15 @@ +-- [PIPES] + +CREATE TYPE PIPES_STATUS AS ENUM ('OPEN', 'CLOSED', 'CV'); + +CREATE TABLE PIPES +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Node1 VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +, Node2 VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +, Length NUMERIC NOT NULL +, Diameter NUMERIC NOT NULL +, Roughness NUMERIC NOT NULL +, MinorLoss NUMERIC NOT NULL +, Status PIPES_STATUS NOT NULL +); diff --git a/sql/section_create/6.pumps.sql b/sql/section_create/6.pumps.sql new file mode 100644 index 0000000..b701708 --- /dev/null +++ b/sql/section_create/6.pumps.sql @@ -0,0 +1,32 @@ +-- [PUMPS] + +CREATE TABLE PUMPS +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Node1 VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +, Node2 VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +); + +CREATE TABLE PUMPS_PROPERTY_POWER +( + ID VARCHAR PRIMARY KEY REFERENCES PUMPS(ID) +, Value VARCHAR(32) NOT NULL +); + +CREATE TABLE PUMPS_PROPERTY_SPEED +( + ID VARCHAR PRIMARY KEY REFERENCES PUMPS(ID) +, Value VARCHAR(32) NOT NULL +); + +CREATE TABLE PUMPS_PROPERTY_HEAD +( + ID VARCHAR PRIMARY KEY REFERENCES PUMPS(ID) +, Head VARCHAR(32) REFERENCES _CURVE(ID) NOT NULL +); + +CREATE TABLE PUMPS_PROPERTY_PATTERN +( + ID VARCHAR PRIMARY KEY REFERENCES PUMPS(ID) +, Pattern VARCHAR(32) REFERENCES _PATTERN(ID) NOT NULL +); diff --git a/sql/section_create/7.valves.sql b/sql/section_create/7.valves.sql new file mode 100644 index 0000000..7159aac --- /dev/null +++ b/sql/section_create/7.valves.sql @@ -0,0 +1,14 @@ +-- [VALVES] + +CREATE TYPE VALVES_TYPE AS ENUM ('PRV', 'PSV', 'PBV', 'FCV', 'TCV', 'GPV'); + +CREATE TABLE VALVES +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Node1 VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +, Node2 VARCHAR(32) REFERENCES _NODE(ID) NOT NULL +, Diameter NUMERIC NOT NULL +, Type VALVES_TYPE NOT NULL +, Setting NUMERIC NOT NULL +, MinorLoss NUMERIC NOT NULL +); diff --git a/sql/section_create/8.tags.sql b/sql/section_create/8.tags.sql new file mode 100644 index 0000000..0cc496c --- /dev/null +++ b/sql/section_create/8.tags.sql @@ -0,0 +1,13 @@ +-- [TAGS] + +CREATE TABLE TAGS_NODE +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _NODE(ID) +, Tag TEXT NOT NULL +); + +CREATE TABLE TAGS_LINK +( + ID VARCHAR(32) PRIMARY KEY REFERENCES _LINK(ID) +, Tag TEXT NOT NULL +); diff --git a/sql/section_create/9.demands.sql b/sql/section_create/9.demands.sql new file mode 100644 index 0000000..355354d --- /dev/null +++ b/sql/section_create/9.demands.sql @@ -0,0 +1,9 @@ +-- [DEMANDS] + +CREATE TABLE DEMANDS +( + Junction VARCHAR(32) REFERENCES JUNCTIONS(ID) NOT NULL +, Demand NUMERIC NOT NULL +, Pattern VARCHAR(32) REFERENCES _PATTERN(ID) +, Category TEXT NOT NULL +); diff --git a/sql/section_drop/1.title.sql b/sql/section_drop/1.title.sql new file mode 100644 index 0000000..215ecc6 --- /dev/null +++ b/sql/section_drop/1.title.sql @@ -0,0 +1,3 @@ +-- [TITLE] + +DROP TABLE TITLE; diff --git a/sql/section_drop/10.status.sql b/sql/section_drop/10.status.sql new file mode 100644 index 0000000..970330e --- /dev/null +++ b/sql/section_drop/10.status.sql @@ -0,0 +1,13 @@ +-- [STATUS] + +DROP TABLE STATUS_LINK; + +DROP TABLE STATUS_VALVE; + +DROP TYPE STATUS_VALVE_STATUS; + +DROP TABLE STATUS_PUMP; + +DROP TABLE STATUS_PIPE; + +DROP TYPE STATUS_PIPE_PUMP_STATUS; diff --git a/sql/section_drop/11.patterns.sql b/sql/section_drop/11.patterns.sql new file mode 100644 index 0000000..565c67e --- /dev/null +++ b/sql/section_drop/11.patterns.sql @@ -0,0 +1,3 @@ +-- [PATTERNS] + +DROP TABLE PATTERNS; diff --git a/sql/section_drop/12.curves.sql b/sql/section_drop/12.curves.sql new file mode 100644 index 0000000..9535588 --- /dev/null +++ b/sql/section_drop/12.curves.sql @@ -0,0 +1,3 @@ +-- [CURVES] + +DROP TABLE CURVES; diff --git a/sql/section_drop/13.controls.sql b/sql/section_drop/13.controls.sql new file mode 100644 index 0000000..5333175 --- /dev/null +++ b/sql/section_drop/13.controls.sql @@ -0,0 +1,9 @@ +-- [CONTROLS] + +DROP TABLE CONTROLS_3; + +DROP TABLE CONTROLS_2; + +DROP TABLE CONTROLS_1; + +DROP TYPE CONTROLS_1_PREP; diff --git a/sql/section_drop/14.rules.sql b/sql/section_drop/14.rules.sql new file mode 100644 index 0000000..7cc4bac --- /dev/null +++ b/sql/section_drop/14.rules.sql @@ -0,0 +1,3 @@ +-- [RULES] + +DROP TABLE RULES; diff --git a/sql/section_drop/15.energy.sql b/sql/section_drop/15.energy.sql new file mode 100644 index 0000000..1da9af8 --- /dev/null +++ b/sql/section_drop/15.energy.sql @@ -0,0 +1,9 @@ +-- [ENERGY] + +DROP TABLE ENERGY_DEMAND_CHARGE; + +DROP TABLE ENERGY_PUMP; + +DROP TABLE ENERGY_GLOBAL; + +DROP TYPE ENERGY_PARAM; diff --git a/sql/section_drop/16.emitters.sql b/sql/section_drop/16.emitters.sql new file mode 100644 index 0000000..7aa46f8 --- /dev/null +++ b/sql/section_drop/16.emitters.sql @@ -0,0 +1,3 @@ +-- [EMITTERS] + +DROP TABLE EMITTERS; diff --git a/sql/section_drop/17.quality.sql b/sql/section_drop/17.quality.sql new file mode 100644 index 0000000..c15ac7d --- /dev/null +++ b/sql/section_drop/17.quality.sql @@ -0,0 +1,3 @@ +-- [QUALITY] + +DROP TABLE QUALITY; diff --git a/sql/section_drop/18.sources.sql b/sql/section_drop/18.sources.sql new file mode 100644 index 0000000..e11b7ea --- /dev/null +++ b/sql/section_drop/18.sources.sql @@ -0,0 +1,5 @@ +-- [SOURCES] + +DROP TABLE SOURCES; + +DROP TYPE SOURCES_TYPE; diff --git a/sql/section_drop/19.reactions.sql b/sql/section_drop/19.reactions.sql new file mode 100644 index 0000000..bcc9dc5 --- /dev/null +++ b/sql/section_drop/19.reactions.sql @@ -0,0 +1,19 @@ +-- [REACTIONS] + +DROP TABLE REACTIONS_ROUGHNESS_CORRELATION; + +DROP TABLE REACTIONS_LIMITING_POTENTIAL; + +DROP TABLE REACTIONS_TANK; + +DROP TABLE REACTIONS_PIPE; + +DROP TYPE REACTIONS_PIPE_PARAM; + +DROP TABLE REACTIONS_GLOBAL; + +DROP TYPE REACTIONS_GLOBAL_PARAM; + +DROP TABLE REACTIONS_ORDER; + +DROP TYPE REACTIONS_ORDER_PARAM; diff --git a/sql/section_drop/2.junctions.sql b/sql/section_drop/2.junctions.sql new file mode 100644 index 0000000..8fc23c4 --- /dev/null +++ b/sql/section_drop/2.junctions.sql @@ -0,0 +1,3 @@ +-- [JUNCTIONS] + +DROP TABLE JUNCTIONS; diff --git a/sql/section_drop/20.mixing.sql b/sql/section_drop/20.mixing.sql new file mode 100644 index 0000000..1434859 --- /dev/null +++ b/sql/section_drop/20.mixing.sql @@ -0,0 +1,5 @@ +-- [MIXING] + +DROP TABLE MIXING; + +DROP TYPE MIXING_Model; diff --git a/sql/section_drop/21.times.sql b/sql/section_drop/21.times.sql new file mode 100644 index 0000000..0d45aed --- /dev/null +++ b/sql/section_drop/21.times.sql @@ -0,0 +1,3 @@ +-- [TIMES] + +DROP TABLE TIMES; diff --git a/sql/section_drop/22.report.sql b/sql/section_drop/22.report.sql new file mode 100644 index 0000000..58dcd51 --- /dev/null +++ b/sql/section_drop/22.report.sql @@ -0,0 +1,3 @@ +-- [REPORT] + +DROP TABLE REPORT; diff --git a/sql/section_drop/23.options.sql b/sql/section_drop/23.options.sql new file mode 100644 index 0000000..69e9714 --- /dev/null +++ b/sql/section_drop/23.options.sql @@ -0,0 +1,3 @@ +-- [OPTIONS] + +DROP TABLE OPTIONS; diff --git a/sql/section_drop/24.coordinates.sql b/sql/section_drop/24.coordinates.sql new file mode 100644 index 0000000..59f9f45 --- /dev/null +++ b/sql/section_drop/24.coordinates.sql @@ -0,0 +1,7 @@ +-- [COORDINATES] + +DROP INDEX COORDINATES_GIST; + +DROP INDEX COORDINATES_SPGIST; + +DROP TABLE COORDINATES; diff --git a/sql/section_drop/25.vertices.sql b/sql/section_drop/25.vertices.sql new file mode 100644 index 0000000..1352d0d --- /dev/null +++ b/sql/section_drop/25.vertices.sql @@ -0,0 +1,3 @@ +-- [VERTICES] + +DROP TABLE VERTICES; diff --git a/sql/section_drop/26.labels.sql b/sql/section_drop/26.labels.sql new file mode 100644 index 0000000..70da104 --- /dev/null +++ b/sql/section_drop/26.labels.sql @@ -0,0 +1,3 @@ +-- [LABELS] + +DROP TABLE LABELS; diff --git a/sql/section_drop/27.backdrop.sql b/sql/section_drop/27.backdrop.sql new file mode 100644 index 0000000..85f3bf2 --- /dev/null +++ b/sql/section_drop/27.backdrop.sql @@ -0,0 +1,3 @@ +-- [BACKDROP] + +DROP TABLE BACKDROP; diff --git a/sql/section_drop/28.end.sql b/sql/section_drop/28.end.sql new file mode 100644 index 0000000..3054ad0 --- /dev/null +++ b/sql/section_drop/28.end.sql @@ -0,0 +1 @@ +-- [END] \ No newline at end of file diff --git a/sql/section_drop/3.reservoirs.sql b/sql/section_drop/3.reservoirs.sql new file mode 100644 index 0000000..4fd1e46 --- /dev/null +++ b/sql/section_drop/3.reservoirs.sql @@ -0,0 +1,3 @@ +-- [RESERVOIRS] + +DROP TABLE RESERVOIRS; diff --git a/sql/section_drop/4.tanks.sql b/sql/section_drop/4.tanks.sql new file mode 100644 index 0000000..f9a4c27 --- /dev/null +++ b/sql/section_drop/4.tanks.sql @@ -0,0 +1,5 @@ +-- [TANKS] + +DROP TABLE TANKS; + +DROP TYPE TANKS_OVERFLOW; diff --git a/sql/section_drop/5.pipes.sql b/sql/section_drop/5.pipes.sql new file mode 100644 index 0000000..e01acd3 --- /dev/null +++ b/sql/section_drop/5.pipes.sql @@ -0,0 +1,5 @@ +-- [PIPES] + +DROP TABLE PIPES; + +DROP TYPE PIPES_STATUS; diff --git a/sql/section_drop/6.pumps.sql b/sql/section_drop/6.pumps.sql new file mode 100644 index 0000000..2526df6 --- /dev/null +++ b/sql/section_drop/6.pumps.sql @@ -0,0 +1,11 @@ +-- [PUMPS] + +DROP TABLE PUMPS_PROPERTY_PATTERN; + +DROP TABLE PUMPS_PROPERTY_HEAD; + +DROP TABLE PUMPS_PROPERTY_SPEED; + +DROP TABLE PUMPS_PROPERTY_POWER; + +DROP TABLE PUMPS; diff --git a/sql/section_drop/7.valves.sql b/sql/section_drop/7.valves.sql new file mode 100644 index 0000000..ca001fe --- /dev/null +++ b/sql/section_drop/7.valves.sql @@ -0,0 +1,5 @@ +-- [VALVES] + +DROP TABLE VALVES; + +DROP TYPE VALVES_TYPE; diff --git a/sql/section_drop/8.tags.sql b/sql/section_drop/8.tags.sql new file mode 100644 index 0000000..78ec688 --- /dev/null +++ b/sql/section_drop/8.tags.sql @@ -0,0 +1,5 @@ +-- [TAGS] + +DROP TABLE TAGS_LINK; + +DROP TABLE TAGS_NODE; diff --git a/sql/section_drop/9.demands.sql b/sql/section_drop/9.demands.sql new file mode 100644 index 0000000..7276cca --- /dev/null +++ b/sql/section_drop/9.demands.sql @@ -0,0 +1,3 @@ +-- [DEMANDS] + +DROP TABLE DEMANDS; From ad60cf262e4e6c7940aa11871c8f03815d64e5b1 Mon Sep 17 00:00:00 2001 From: wqy Date: Sat, 27 Aug 2022 11:51:09 +0800 Subject: [PATCH 2/6] Add admin script to create/delete template --- admin.py | 5 +++ tjnetwork_admin.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 admin.py create mode 100644 tjnetwork_admin.py diff --git a/admin.py b/admin.py new file mode 100644 index 0000000..74d7066 --- /dev/null +++ b/admin.py @@ -0,0 +1,5 @@ +from tjnetwork_admin import * + +if __name__ == "__main__": + delete_template() + create_template() diff --git a/tjnetwork_admin.py b/tjnetwork_admin.py new file mode 100644 index 0000000..c32f6e2 --- /dev/null +++ b/tjnetwork_admin.py @@ -0,0 +1,89 @@ +import psycopg as pg + +sql_create = [ + "sql/base_create.sql", + "sql/section_create/1.title.sql", + "sql/section_create/2.junctions.sql", + "sql/section_create/3.reservoirs.sql", + "sql/section_create/4.tanks.sql", + "sql/section_create/5.pipes.sql", + "sql/section_create/6.pumps.sql", + "sql/section_create/7.valves.sql", + "sql/section_create/8.tags.sql", + "sql/section_create/9.demands.sql", + "sql/section_create/10.status.sql", + "sql/section_create/11.patterns.sql", + "sql/section_create/12.curves.sql", + "sql/section_create/13.controls.sql", + "sql/section_create/14.rules.sql", + "sql/section_create/15.energy.sql", + "sql/section_create/16.emitters.sql", + "sql/section_create/17.quality.sql", + "sql/section_create/18.sources.sql", + "sql/section_create/19.reactions.sql", + "sql/section_create/20.mixing.sql", + "sql/section_create/21.times.sql", + "sql/section_create/22.report.sql", + "sql/section_create/23.options.sql", + "sql/section_create/24.coordinates.sql", + "sql/section_create/25.vertices.sql", + "sql/section_create/26.labels.sql", + "sql/section_create/27.backdrop.sql", + "sql/section_create/28.end.sql" +] + +sql_drop = [ + "sql/section_drop/28.end.sql", + "sql/section_drop/27.backdrop.sql", + "sql/section_drop/26.labels.sql", + "sql/section_drop/25.vertices.sql", + "sql/section_drop/24.coordinates.sql", + "sql/section_drop/23.options.sql", + "sql/section_drop/22.report.sql", + "sql/section_drop/21.times.sql", + "sql/section_drop/20.mixing.sql", + "sql/section_drop/19.reactions.sql", + "sql/section_drop/18.sources.sql", + "sql/section_drop/17.quality.sql", + "sql/section_drop/16.emitters.sql", + "sql/section_drop/15.energy.sql", + "sql/section_drop/14.rules.sql", + "sql/section_drop/13.controls.sql", + "sql/section_drop/12.curves.sql", + "sql/section_drop/11.patterns.sql", + "sql/section_drop/10.status.sql", + "sql/section_drop/9.demands.sql", + "sql/section_drop/8.tags.sql", + "sql/section_drop/7.valves.sql", + "sql/section_drop/6.pumps.sql", + "sql/section_drop/5.pipes.sql", + "sql/section_drop/4.tanks.sql", + "sql/section_drop/3.reservoirs.sql", + "sql/section_drop/2.junctions.sql", + "sql/section_drop/1.title.sql", + "sql/base_drop.sql" +] + +def create_template(): + with pg.connect(conninfo="dbname=postgres", autocommit=True) as conn: + with conn.cursor() as cur: + cur.execute(f"create database project") + with pg.connect(conninfo=f"dbname=project") as conn: + with conn.cursor() as cur: + for sql in sql_create: + with open(sql, "r") as f: + cur.execute(f.read()) + print(f'executed {sql}') + conn.commit() + +def delete_template(): + with pg.connect(conninfo=f"dbname=project") as conn: + with conn.cursor() as cur: + for sql in sql_drop: + with open(sql, "r") as f: + cur.execute(f.read()) + print(f'executed {sql}') + conn.commit() + with pg.connect(conninfo="dbname=postgres", autocommit=True) as conn: + with conn.cursor() as cur: + cur.execute(f"drop database project") From 690e924dfd09d3aae689cbae2b135f90f90f32d3 Mon Sep 17 00:00:00 2001 From: wqy Date: Sat, 27 Aug 2022 11:54:33 +0800 Subject: [PATCH 3/6] Clean repo --- VCRUNTIME140_1.dll.zip | Bin 22882 -> 0 bytes VCRUNTIME140_1.dll的位置.txt | 5 --- __pycache__/main.cpython-37.pyc | Bin 4729 -> 0 bytes __pycache__/tjnetwork.cpython-37.pyc | Bin 4362 -> 0 bytes a.rpt | 0 abc.rpt | 0 afjdajflajdfljaskfl.rpt | 0 n1.rpt | 0 net.rpt | 0 net1.rpt | 0 network.rpt | 0 admin.py => script/admin.py | 0 {sql => script/sql}/base_create.sql | 0 {sql => script/sql}/base_drop.sql | 0 .../sql}/section_create/1.title.sql | 0 .../sql}/section_create/10.status.sql | 0 .../sql}/section_create/11.patterns.sql | 0 .../sql}/section_create/12.curves.sql | 0 .../sql}/section_create/13.controls.sql | 0 .../sql}/section_create/14.rules.sql | 0 .../sql}/section_create/15.energy.sql | 0 .../sql}/section_create/16.emitters.sql | 0 .../sql}/section_create/17.quality.sql | 0 .../sql}/section_create/18.sources.sql | 0 .../sql}/section_create/19.reactions.sql | 0 .../sql}/section_create/2.junctions.sql | 0 .../sql}/section_create/20.mixing.sql | 0 .../sql}/section_create/21.times.sql | 0 .../sql}/section_create/22.report.sql | 0 .../sql}/section_create/23.options.sql | 0 .../sql}/section_create/24.coordinates.sql | 0 .../sql}/section_create/25.vertices.sql | 0 .../sql}/section_create/26.labels.sql | 0 .../sql}/section_create/27.backdrop.sql | 0 {sql => script/sql}/section_create/28.end.sql | 0 .../sql}/section_create/3.reservoirs.sql | 0 .../sql}/section_create/4.tanks.sql | 0 .../sql}/section_create/5.pipes.sql | 0 .../sql}/section_create/6.pumps.sql | 0 .../sql}/section_create/7.valves.sql | 0 {sql => script/sql}/section_create/8.tags.sql | 0 .../sql}/section_create/9.demands.sql | 0 {sql => script/sql}/section_drop/1.title.sql | 0 .../sql}/section_drop/10.status.sql | 0 .../sql}/section_drop/11.patterns.sql | 0 .../sql}/section_drop/12.curves.sql | 0 .../sql}/section_drop/13.controls.sql | 0 {sql => script/sql}/section_drop/14.rules.sql | 0 .../sql}/section_drop/15.energy.sql | 0 .../sql}/section_drop/16.emitters.sql | 0 .../sql}/section_drop/17.quality.sql | 0 .../sql}/section_drop/18.sources.sql | 0 .../sql}/section_drop/19.reactions.sql | 0 .../sql}/section_drop/2.junctions.sql | 0 .../sql}/section_drop/20.mixing.sql | 0 {sql => script/sql}/section_drop/21.times.sql | 0 .../sql}/section_drop/22.report.sql | 0 .../sql}/section_drop/23.options.sql | 0 .../sql}/section_drop/24.coordinates.sql | 0 .../sql}/section_drop/25.vertices.sql | 0 .../sql}/section_drop/26.labels.sql | 0 .../sql}/section_drop/27.backdrop.sql | 0 {sql => script/sql}/section_drop/28.end.sql | 0 .../sql}/section_drop/3.reservoirs.sql | 0 {sql => script/sql}/section_drop/4.tanks.sql | 0 {sql => script/sql}/section_drop/5.pipes.sql | 0 {sql => script/sql}/section_drop/6.pumps.sql | 0 {sql => script/sql}/section_drop/7.valves.sql | 0 {sql => script/sql}/section_drop/8.tags.sql | 0 .../sql}/section_drop/9.demands.sql | 0 startserver.bat => script/startserver.bat | 0 .../tjnetwork_admin.py | 0 table.sql | 36 ------------------ 73 files changed, 41 deletions(-) delete mode 100644 VCRUNTIME140_1.dll.zip delete mode 100644 VCRUNTIME140_1.dll的位置.txt delete mode 100644 __pycache__/main.cpython-37.pyc delete mode 100644 __pycache__/tjnetwork.cpython-37.pyc delete mode 100644 a.rpt delete mode 100644 abc.rpt delete mode 100644 afjdajflajdfljaskfl.rpt delete mode 100644 n1.rpt delete mode 100644 net.rpt delete mode 100644 net1.rpt delete mode 100644 network.rpt rename admin.py => script/admin.py (100%) rename {sql => script/sql}/base_create.sql (100%) rename {sql => script/sql}/base_drop.sql (100%) rename {sql => script/sql}/section_create/1.title.sql (100%) rename {sql => script/sql}/section_create/10.status.sql (100%) rename {sql => script/sql}/section_create/11.patterns.sql (100%) rename {sql => script/sql}/section_create/12.curves.sql (100%) rename {sql => script/sql}/section_create/13.controls.sql (100%) rename {sql => script/sql}/section_create/14.rules.sql (100%) rename {sql => script/sql}/section_create/15.energy.sql (100%) rename {sql => script/sql}/section_create/16.emitters.sql (100%) rename {sql => script/sql}/section_create/17.quality.sql (100%) rename {sql => script/sql}/section_create/18.sources.sql (100%) rename {sql => script/sql}/section_create/19.reactions.sql (100%) rename {sql => script/sql}/section_create/2.junctions.sql (100%) rename {sql => script/sql}/section_create/20.mixing.sql (100%) rename {sql => script/sql}/section_create/21.times.sql (100%) rename {sql => script/sql}/section_create/22.report.sql (100%) rename {sql => script/sql}/section_create/23.options.sql (100%) rename {sql => script/sql}/section_create/24.coordinates.sql (100%) rename {sql => script/sql}/section_create/25.vertices.sql (100%) rename {sql => script/sql}/section_create/26.labels.sql (100%) rename {sql => script/sql}/section_create/27.backdrop.sql (100%) rename {sql => script/sql}/section_create/28.end.sql (100%) rename {sql => script/sql}/section_create/3.reservoirs.sql (100%) rename {sql => script/sql}/section_create/4.tanks.sql (100%) rename {sql => script/sql}/section_create/5.pipes.sql (100%) rename {sql => script/sql}/section_create/6.pumps.sql (100%) rename {sql => script/sql}/section_create/7.valves.sql (100%) rename {sql => script/sql}/section_create/8.tags.sql (100%) rename {sql => script/sql}/section_create/9.demands.sql (100%) rename {sql => script/sql}/section_drop/1.title.sql (100%) rename {sql => script/sql}/section_drop/10.status.sql (100%) rename {sql => script/sql}/section_drop/11.patterns.sql (100%) rename {sql => script/sql}/section_drop/12.curves.sql (100%) rename {sql => script/sql}/section_drop/13.controls.sql (100%) rename {sql => script/sql}/section_drop/14.rules.sql (100%) rename {sql => script/sql}/section_drop/15.energy.sql (100%) rename {sql => script/sql}/section_drop/16.emitters.sql (100%) rename {sql => script/sql}/section_drop/17.quality.sql (100%) rename {sql => script/sql}/section_drop/18.sources.sql (100%) rename {sql => script/sql}/section_drop/19.reactions.sql (100%) rename {sql => script/sql}/section_drop/2.junctions.sql (100%) rename {sql => script/sql}/section_drop/20.mixing.sql (100%) rename {sql => script/sql}/section_drop/21.times.sql (100%) rename {sql => script/sql}/section_drop/22.report.sql (100%) rename {sql => script/sql}/section_drop/23.options.sql (100%) rename {sql => script/sql}/section_drop/24.coordinates.sql (100%) rename {sql => script/sql}/section_drop/25.vertices.sql (100%) rename {sql => script/sql}/section_drop/26.labels.sql (100%) rename {sql => script/sql}/section_drop/27.backdrop.sql (100%) rename {sql => script/sql}/section_drop/28.end.sql (100%) rename {sql => script/sql}/section_drop/3.reservoirs.sql (100%) rename {sql => script/sql}/section_drop/4.tanks.sql (100%) rename {sql => script/sql}/section_drop/5.pipes.sql (100%) rename {sql => script/sql}/section_drop/6.pumps.sql (100%) rename {sql => script/sql}/section_drop/7.valves.sql (100%) rename {sql => script/sql}/section_drop/8.tags.sql (100%) rename {sql => script/sql}/section_drop/9.demands.sql (100%) rename startserver.bat => script/startserver.bat (100%) rename tjnetwork_admin.py => script/tjnetwork_admin.py (100%) delete mode 100644 table.sql diff --git a/VCRUNTIME140_1.dll.zip b/VCRUNTIME140_1.dll.zip deleted file mode 100644 index 76273cc89fd09ece5bdca91835d69f0b86ede7ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22882 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 diff --git a/VCRUNTIME140_1.dll的位置.txt b/VCRUNTIME140_1.dll的位置.txt deleted file mode 100644 index 510e4e9..0000000 --- a/VCRUNTIME140_1.dll的位置.txt +++ /dev/null @@ -1,5 +0,0 @@ -1、问题描述: -在卸载office等应用或电脑崩溃后会出现缺VCRUNTIME140_1.dll的情况 -2、解决方法: -64位的电脑把“VCRUNTIME140_1.dll”文件放到“C:\Windows\System32”文件夹里即可 -32位的电脑把“VCRUNTIME140_1.dll”文件放到“C:\Windows\SysWOW64”文件夹里即可 \ No newline at end of file diff --git a/__pycache__/main.cpython-37.pyc b/__pycache__/main.cpython-37.pyc deleted file mode 100644 index 1d17875f36d84bb7af9e48bbe2410cf19f80bbbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4729 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 Fe*qQ_D60Sf diff --git a/a.rpt b/a.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/abc.rpt b/abc.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/afjdajflajdfljaskfl.rpt b/afjdajflajdfljaskfl.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/n1.rpt b/n1.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/net.rpt b/net.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/net1.rpt b/net1.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/network.rpt b/network.rpt deleted file mode 100644 index e69de29..0000000 diff --git a/admin.py b/script/admin.py similarity index 100% rename from admin.py rename to script/admin.py diff --git a/sql/base_create.sql b/script/sql/base_create.sql similarity index 100% rename from sql/base_create.sql rename to script/sql/base_create.sql diff --git a/sql/base_drop.sql b/script/sql/base_drop.sql similarity index 100% rename from sql/base_drop.sql rename to script/sql/base_drop.sql diff --git a/sql/section_create/1.title.sql b/script/sql/section_create/1.title.sql similarity index 100% rename from sql/section_create/1.title.sql rename to script/sql/section_create/1.title.sql diff --git a/sql/section_create/10.status.sql b/script/sql/section_create/10.status.sql similarity index 100% rename from sql/section_create/10.status.sql rename to script/sql/section_create/10.status.sql diff --git a/sql/section_create/11.patterns.sql b/script/sql/section_create/11.patterns.sql similarity index 100% rename from sql/section_create/11.patterns.sql rename to script/sql/section_create/11.patterns.sql diff --git a/sql/section_create/12.curves.sql b/script/sql/section_create/12.curves.sql similarity index 100% rename from sql/section_create/12.curves.sql rename to script/sql/section_create/12.curves.sql diff --git a/sql/section_create/13.controls.sql b/script/sql/section_create/13.controls.sql similarity index 100% rename from sql/section_create/13.controls.sql rename to script/sql/section_create/13.controls.sql diff --git a/sql/section_create/14.rules.sql b/script/sql/section_create/14.rules.sql similarity index 100% rename from sql/section_create/14.rules.sql rename to script/sql/section_create/14.rules.sql diff --git a/sql/section_create/15.energy.sql b/script/sql/section_create/15.energy.sql similarity index 100% rename from sql/section_create/15.energy.sql rename to script/sql/section_create/15.energy.sql diff --git a/sql/section_create/16.emitters.sql b/script/sql/section_create/16.emitters.sql similarity index 100% rename from sql/section_create/16.emitters.sql rename to script/sql/section_create/16.emitters.sql diff --git a/sql/section_create/17.quality.sql b/script/sql/section_create/17.quality.sql similarity index 100% rename from sql/section_create/17.quality.sql rename to script/sql/section_create/17.quality.sql diff --git a/sql/section_create/18.sources.sql b/script/sql/section_create/18.sources.sql similarity index 100% rename from sql/section_create/18.sources.sql rename to script/sql/section_create/18.sources.sql diff --git a/sql/section_create/19.reactions.sql b/script/sql/section_create/19.reactions.sql similarity index 100% rename from sql/section_create/19.reactions.sql rename to script/sql/section_create/19.reactions.sql diff --git a/sql/section_create/2.junctions.sql b/script/sql/section_create/2.junctions.sql similarity index 100% rename from sql/section_create/2.junctions.sql rename to script/sql/section_create/2.junctions.sql diff --git a/sql/section_create/20.mixing.sql b/script/sql/section_create/20.mixing.sql similarity index 100% rename from sql/section_create/20.mixing.sql rename to script/sql/section_create/20.mixing.sql diff --git a/sql/section_create/21.times.sql b/script/sql/section_create/21.times.sql similarity index 100% rename from sql/section_create/21.times.sql rename to script/sql/section_create/21.times.sql diff --git a/sql/section_create/22.report.sql b/script/sql/section_create/22.report.sql similarity index 100% rename from sql/section_create/22.report.sql rename to script/sql/section_create/22.report.sql diff --git a/sql/section_create/23.options.sql b/script/sql/section_create/23.options.sql similarity index 100% rename from sql/section_create/23.options.sql rename to script/sql/section_create/23.options.sql diff --git a/sql/section_create/24.coordinates.sql b/script/sql/section_create/24.coordinates.sql similarity index 100% rename from sql/section_create/24.coordinates.sql rename to script/sql/section_create/24.coordinates.sql diff --git a/sql/section_create/25.vertices.sql b/script/sql/section_create/25.vertices.sql similarity index 100% rename from sql/section_create/25.vertices.sql rename to script/sql/section_create/25.vertices.sql diff --git a/sql/section_create/26.labels.sql b/script/sql/section_create/26.labels.sql similarity index 100% rename from sql/section_create/26.labels.sql rename to script/sql/section_create/26.labels.sql diff --git a/sql/section_create/27.backdrop.sql b/script/sql/section_create/27.backdrop.sql similarity index 100% rename from sql/section_create/27.backdrop.sql rename to script/sql/section_create/27.backdrop.sql diff --git a/sql/section_create/28.end.sql b/script/sql/section_create/28.end.sql similarity index 100% rename from sql/section_create/28.end.sql rename to script/sql/section_create/28.end.sql diff --git a/sql/section_create/3.reservoirs.sql b/script/sql/section_create/3.reservoirs.sql similarity index 100% rename from sql/section_create/3.reservoirs.sql rename to script/sql/section_create/3.reservoirs.sql diff --git a/sql/section_create/4.tanks.sql b/script/sql/section_create/4.tanks.sql similarity index 100% rename from sql/section_create/4.tanks.sql rename to script/sql/section_create/4.tanks.sql diff --git a/sql/section_create/5.pipes.sql b/script/sql/section_create/5.pipes.sql similarity index 100% rename from sql/section_create/5.pipes.sql rename to script/sql/section_create/5.pipes.sql diff --git a/sql/section_create/6.pumps.sql b/script/sql/section_create/6.pumps.sql similarity index 100% rename from sql/section_create/6.pumps.sql rename to script/sql/section_create/6.pumps.sql diff --git a/sql/section_create/7.valves.sql b/script/sql/section_create/7.valves.sql similarity index 100% rename from sql/section_create/7.valves.sql rename to script/sql/section_create/7.valves.sql diff --git a/sql/section_create/8.tags.sql b/script/sql/section_create/8.tags.sql similarity index 100% rename from sql/section_create/8.tags.sql rename to script/sql/section_create/8.tags.sql diff --git a/sql/section_create/9.demands.sql b/script/sql/section_create/9.demands.sql similarity index 100% rename from sql/section_create/9.demands.sql rename to script/sql/section_create/9.demands.sql diff --git a/sql/section_drop/1.title.sql b/script/sql/section_drop/1.title.sql similarity index 100% rename from sql/section_drop/1.title.sql rename to script/sql/section_drop/1.title.sql diff --git a/sql/section_drop/10.status.sql b/script/sql/section_drop/10.status.sql similarity index 100% rename from sql/section_drop/10.status.sql rename to script/sql/section_drop/10.status.sql diff --git a/sql/section_drop/11.patterns.sql b/script/sql/section_drop/11.patterns.sql similarity index 100% rename from sql/section_drop/11.patterns.sql rename to script/sql/section_drop/11.patterns.sql diff --git a/sql/section_drop/12.curves.sql b/script/sql/section_drop/12.curves.sql similarity index 100% rename from sql/section_drop/12.curves.sql rename to script/sql/section_drop/12.curves.sql diff --git a/sql/section_drop/13.controls.sql b/script/sql/section_drop/13.controls.sql similarity index 100% rename from sql/section_drop/13.controls.sql rename to script/sql/section_drop/13.controls.sql diff --git a/sql/section_drop/14.rules.sql b/script/sql/section_drop/14.rules.sql similarity index 100% rename from sql/section_drop/14.rules.sql rename to script/sql/section_drop/14.rules.sql diff --git a/sql/section_drop/15.energy.sql b/script/sql/section_drop/15.energy.sql similarity index 100% rename from sql/section_drop/15.energy.sql rename to script/sql/section_drop/15.energy.sql diff --git a/sql/section_drop/16.emitters.sql b/script/sql/section_drop/16.emitters.sql similarity index 100% rename from sql/section_drop/16.emitters.sql rename to script/sql/section_drop/16.emitters.sql diff --git a/sql/section_drop/17.quality.sql b/script/sql/section_drop/17.quality.sql similarity index 100% rename from sql/section_drop/17.quality.sql rename to script/sql/section_drop/17.quality.sql diff --git a/sql/section_drop/18.sources.sql b/script/sql/section_drop/18.sources.sql similarity index 100% rename from sql/section_drop/18.sources.sql rename to script/sql/section_drop/18.sources.sql diff --git a/sql/section_drop/19.reactions.sql b/script/sql/section_drop/19.reactions.sql similarity index 100% rename from sql/section_drop/19.reactions.sql rename to script/sql/section_drop/19.reactions.sql diff --git a/sql/section_drop/2.junctions.sql b/script/sql/section_drop/2.junctions.sql similarity index 100% rename from sql/section_drop/2.junctions.sql rename to script/sql/section_drop/2.junctions.sql diff --git a/sql/section_drop/20.mixing.sql b/script/sql/section_drop/20.mixing.sql similarity index 100% rename from sql/section_drop/20.mixing.sql rename to script/sql/section_drop/20.mixing.sql diff --git a/sql/section_drop/21.times.sql b/script/sql/section_drop/21.times.sql similarity index 100% rename from sql/section_drop/21.times.sql rename to script/sql/section_drop/21.times.sql diff --git a/sql/section_drop/22.report.sql b/script/sql/section_drop/22.report.sql similarity index 100% rename from sql/section_drop/22.report.sql rename to script/sql/section_drop/22.report.sql diff --git a/sql/section_drop/23.options.sql b/script/sql/section_drop/23.options.sql similarity index 100% rename from sql/section_drop/23.options.sql rename to script/sql/section_drop/23.options.sql diff --git a/sql/section_drop/24.coordinates.sql b/script/sql/section_drop/24.coordinates.sql similarity index 100% rename from sql/section_drop/24.coordinates.sql rename to script/sql/section_drop/24.coordinates.sql diff --git a/sql/section_drop/25.vertices.sql b/script/sql/section_drop/25.vertices.sql similarity index 100% rename from sql/section_drop/25.vertices.sql rename to script/sql/section_drop/25.vertices.sql diff --git a/sql/section_drop/26.labels.sql b/script/sql/section_drop/26.labels.sql similarity index 100% rename from sql/section_drop/26.labels.sql rename to script/sql/section_drop/26.labels.sql diff --git a/sql/section_drop/27.backdrop.sql b/script/sql/section_drop/27.backdrop.sql similarity index 100% rename from sql/section_drop/27.backdrop.sql rename to script/sql/section_drop/27.backdrop.sql diff --git a/sql/section_drop/28.end.sql b/script/sql/section_drop/28.end.sql similarity index 100% rename from sql/section_drop/28.end.sql rename to script/sql/section_drop/28.end.sql diff --git a/sql/section_drop/3.reservoirs.sql b/script/sql/section_drop/3.reservoirs.sql similarity index 100% rename from sql/section_drop/3.reservoirs.sql rename to script/sql/section_drop/3.reservoirs.sql diff --git a/sql/section_drop/4.tanks.sql b/script/sql/section_drop/4.tanks.sql similarity index 100% rename from sql/section_drop/4.tanks.sql rename to script/sql/section_drop/4.tanks.sql diff --git a/sql/section_drop/5.pipes.sql b/script/sql/section_drop/5.pipes.sql similarity index 100% rename from sql/section_drop/5.pipes.sql rename to script/sql/section_drop/5.pipes.sql diff --git a/sql/section_drop/6.pumps.sql b/script/sql/section_drop/6.pumps.sql similarity index 100% rename from sql/section_drop/6.pumps.sql rename to script/sql/section_drop/6.pumps.sql diff --git a/sql/section_drop/7.valves.sql b/script/sql/section_drop/7.valves.sql similarity index 100% rename from sql/section_drop/7.valves.sql rename to script/sql/section_drop/7.valves.sql diff --git a/sql/section_drop/8.tags.sql b/script/sql/section_drop/8.tags.sql similarity index 100% rename from sql/section_drop/8.tags.sql rename to script/sql/section_drop/8.tags.sql diff --git a/sql/section_drop/9.demands.sql b/script/sql/section_drop/9.demands.sql similarity index 100% rename from sql/section_drop/9.demands.sql rename to script/sql/section_drop/9.demands.sql diff --git a/startserver.bat b/script/startserver.bat similarity index 100% rename from startserver.bat rename to script/startserver.bat diff --git a/tjnetwork_admin.py b/script/tjnetwork_admin.py similarity index 100% rename from tjnetwork_admin.py rename to script/tjnetwork_admin.py diff --git a/table.sql b/table.sql deleted file mode 100644 index 1b3c0f2..0000000 --- a/table.sql +++ /dev/null @@ -1,36 +0,0 @@ -drop table if exists Link; -drop table if exists Node; - -drop type if exists EN_NodeType; -create type EN_NodeType as enum ( - 'EN_JUNCTION', - 'EN_RESERVOIR', - 'EN_TANK' -); - -drop type if exists EN_LinkType; -create type EN_LinkType as enum ( - 'EN_CVPIPE', - 'EN_PIPE', - 'EN_PUMP', - 'EN_PRV', - 'EN_PSV', - 'EN_PBV', - 'EN_FCV', - 'EN_TCV', - 'EN_GPV' -); - -create table Node ( - Id varchar(32) primary key, - Type EN_NodeType not null, - Coord point not null default(point(0.0, 0.0)), - Elevation numeric not null default(0.0) -); - -create table Link ( - Id varchar(32) primary key, - Type EN_LinkType not null, - FromNode varchar(32) not null references Node(Id), - ToNode varchar(32) not null references Node(Id) -); \ No newline at end of file From 4022823f1d98d4fa4a341afe9f94c6061a5f3062 Mon Sep 17 00:00:00 2001 From: wqy Date: Sat, 27 Aug 2022 11:57:11 +0800 Subject: [PATCH 4/6] Add gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aed0c9d --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# python cache +__pycache__/ + +# epanet +*.rpt +*.opt From d7922351c01e8a3066addc9a385337b2635c2986 Mon Sep 17 00:00:00 2001 From: wqy Date: Sat, 27 Aug 2022 11:58:37 +0800 Subject: [PATCH 5/6] Restore startserver.bat --- script/startserver.bat => startserver.bat | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename script/startserver.bat => startserver.bat (100%) diff --git a/script/startserver.bat b/startserver.bat similarity index 100% rename from script/startserver.bat rename to startserver.bat From 96c58576531b89b88a75d011a2de0696fe4e2835 Mon Sep 17 00:00:00 2001 From: wqy Date: Sat, 27 Aug 2022 12:08:42 +0800 Subject: [PATCH 6/6] Add script to install psycopg --- script/tool/install.bat | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 script/tool/install.bat diff --git a/script/tool/install.bat b/script/tool/install.bat new file mode 100644 index 0000000..a948475 --- /dev/null +++ b/script/tool/install.bat @@ -0,0 +1,2 @@ +pip install --upgrade pip +pip install "psycopg[binary]"