Skip to content

Commit 3954089

Browse files
authored
Merge pull request #56 from OpenDataAlex/process_tracker_python-51
Process tracker python 51
2 parents 373bd27 + c451dca commit 3954089

File tree

6 files changed

+541
-53
lines changed

6 files changed

+541
-53
lines changed

dbscripts/mysql_process_tracker.sql

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,3 +300,40 @@ create table process_tracker.cluster_process
300300
)
301301
comment 'Relationship tracking between processes and performance clusters.';
302302

303+
create table process_tracker.source_object_lkup
304+
(
305+
source_object_id int auto_increment,
306+
source_id int not null,
307+
source_object_name varchar(250) null,
308+
constraint source_object_lkup_pk
309+
primary key (source_object_id),
310+
constraint source_object_lkup_udx01
311+
unique (source_id, source_object_name),
312+
constraint source_object_lkup_source_lkup_source_id_fk
313+
foreign key (source_id) references process_tracker.source_lkup (source_id)
314+
);
315+
316+
create table process_tracker.process_target_object
317+
(
318+
process_id int not null,
319+
target_object_id int not null,
320+
constraint process_target_object_pk
321+
primary key (process_id, target_object_id),
322+
constraint process_target_object_fk01
323+
foreign key (process_id) references process_tracker.process (process_id),
324+
constraint process_target_object_fk02
325+
foreign key (target_object_id) references process_tracker.source_object_lkup (source_object_id)
326+
);
327+
328+
create table process_tracker.process_source_object
329+
(
330+
process_id int not null,
331+
source_object_id int not null,
332+
constraint process_source_object_pk
333+
primary key (process_id, source_object_id),
334+
constraint process_source_object_fk01
335+
foreign key (process_id) references process_tracker.process (process_id),
336+
constraint process_source_object_fk02
337+
foreign key (source_object_id) references process_tracker.source_object_lkup (source_object_id)
338+
);
339+

dbscripts/postgresql_process_tracker.sql

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,3 +454,53 @@ comment on table cluster_process is 'Relationship tracking between processes and
454454

455455
alter table cluster_process owner to pt_admin;
456456

457+
create table process_tracker.source_object_lkup
458+
(
459+
source_object_id serial not null
460+
constraint source_object_lkup_pk
461+
primary key,
462+
source_id integer not null
463+
constraint source_object_lkup_fk01
464+
references process_tracker.source_lkup,
465+
source_object_name varchar(250)
466+
);
467+
468+
comment on table process_tracker.source_object_lkup is 'Reference table for source/target objects.';
469+
470+
alter table process_tracker.source_object_lkup owner to pt_admin;
471+
472+
create unique index source_object_lkup_udx01
473+
on process_tracker.source_object_lkup (source_id, source_object_name);
474+
475+
create table process_tracker.process_target_object
476+
(
477+
process_id integer not null
478+
constraint process_target_object_fk01
479+
references process_tracker.process,
480+
target_object_id integer not null
481+
constraint process_target_object_fk02
482+
references process_tracker.source_object_lkup,
483+
constraint process_target_object_pk
484+
primary key (process_id, target_object_id)
485+
);
486+
487+
comment on table process_tracker.process_target_object is 'Relationship between processes and target objects';
488+
489+
alter table process_tracker.process_target_object owner to pt_admin;
490+
491+
create table process_tracker.process_source_object
492+
(
493+
process_id integer not null
494+
constraint process_source_object_fk01
495+
references process_tracker.process,
496+
source_object_id integer not null
497+
constraint process_source_object_fk02
498+
references process_tracker.source_object_lkup,
499+
constraint process_source_object_pk
500+
primary key (process_id, source_object_id)
501+
);
502+
503+
comment on table process_tracker.process_source_object is 'Relationship between processes and source objects';
504+
505+
alter table process_tracker.process_source_object owner to pt_admin;
506+

process_tracker/models/process.py

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ class ProcessSource(Base):
173173
nullable=False,
174174
)
175175

176-
sources = relationship("Source", passive_deletes="all")
177176
processes = relationship("Process", passive_deletes="all")
177+
sources = relationship("Source", passive_deletes="all")
178178

179179
def __repr__(self):
180180

@@ -184,6 +184,33 @@ def __repr__(self):
184184
)
185185

186186

187+
class ProcessSourceObject(Base):
188+
__tablename__ = "process_source_object"
189+
__table_args__ = {"schema": "process_tracker"}
190+
191+
process_id = Column(
192+
Integer,
193+
ForeignKey("process_tracker.process.process_id"),
194+
primary_key=True,
195+
nullable=False,
196+
)
197+
source_object_id = Column(
198+
Integer,
199+
ForeignKey("process_tracker.source_object_lkup.source_object_id"),
200+
primary_key=True,
201+
nullable=False,
202+
)
203+
204+
objects = relationship("SourceObject", passive_deletes="all")
205+
processes = relationship("Process", passive_deletes="all")
206+
207+
def __repr__(self):
208+
return "<ProcessSourceObject (process_id=%s, source_object=%s)>" % (
209+
self.process_id,
210+
self.source_object_id,
211+
)
212+
213+
187214
class ProcessTarget(Base):
188215
__tablename__ = "process_target"
189216
__table_args__ = {"schema": "process_tracker"}
@@ -201,13 +228,41 @@ class ProcessTarget(Base):
201228
nullable=False,
202229
)
203230

204-
targets = relationship("Source", passive_deletes="all")
205231
processes = relationship("Process", passive_deletes="all")
232+
targets = relationship("Source", passive_deletes="all")
206233

207234
def __repr__(self):
208235
return "<ProcessSource (process=%s, target_source=%s)>" % (
209236
self.process_id,
210-
self.source_id,
237+
self.target_source_id,
238+
)
239+
240+
241+
class ProcessTargetObject(Base):
242+
243+
__tablename__ = "process_target_object"
244+
__table_args__ = {"schema": "process_tracker"}
245+
246+
process_id = Column(
247+
Integer,
248+
ForeignKey("process_tracker.process.process_id"),
249+
primary_key=True,
250+
nullable=False,
251+
)
252+
target_object_id = Column(
253+
Integer,
254+
ForeignKey("process_tracker.source_object_lkup.source_object_id"),
255+
primary_key=True,
256+
nullable=False,
257+
)
258+
259+
objects = relationship("SourceObject", passive_deletes="all")
260+
processes = relationship("Process", passive_deletes="all")
261+
262+
def __repr__(self):
263+
return "<ProcessTargetObject (process_id=%s, target_object=%s)>" % (
264+
self.process_id,
265+
self.target_object_id,
211266
)
212267

213268

process_tracker/models/source.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# SQLAlchemy Models
22
# Models for Source entities
33

4-
from sqlalchemy import Column, Integer, Sequence, String
4+
from sqlalchemy import Column, ForeignKey, Integer, Sequence, String, UniqueConstraint
5+
from sqlalchemy.orm import relationship
56

67
from process_tracker.models.model_base import Base
78

@@ -22,3 +23,36 @@ class Source(Base):
2223
def __repr__(self):
2324

2425
return "<Source (name=%s)>" % self.source_name
26+
27+
28+
class SourceObject(Base):
29+
30+
__tablename__ = "source_object_lkup"
31+
__table_args__ = {"schema": "process_tracker"}
32+
33+
source_object_id = Column(
34+
Integer,
35+
Sequence("source_object_lkup_source_object_id_seq", schema="process_tracker"),
36+
primary_key=True,
37+
nullable=False,
38+
)
39+
source_id = Column(
40+
Integer, ForeignKey("process_tracker.source_lkup.source_id"), nullable=False
41+
)
42+
source_object_name = Column(String(250), nullable=False)
43+
44+
UniqueConstraint(source_id, source_object_name)
45+
46+
source_processes = relationship(
47+
"ProcessSourceObject", back_populates="objects", passive_deletes="all"
48+
)
49+
target_processes = relationship(
50+
"ProcessTargetObject", back_populates="objects", passive_deletes="all"
51+
)
52+
53+
def __repr__(self):
54+
55+
return "<SourceObject (source_id=%s, source_object_name=%s)>" % (
56+
self.source_id,
57+
self.source_object_name,
58+
)

0 commit comments

Comments
 (0)