digraph g {
graph [
rankdir = "LR",
concentrate = true,
ratio = auto
];
node [
fontsize = "10",
shape = record
];
edge [
];

"content" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > sha1 </TD><TD align="left" > sha1 </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > sha1_git </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > sha256 </TD><TD align="left" > sha256 </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > blake2s256 </TD><TD align="left" > blake2s256 </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > length </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > ctime </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > status </TD><TD align="left" > content_status </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol7"> </TD></TR> <TR><TD PORT="ltcol8" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol8"> </TD></TR> </TABLE>> ];

"dbversion" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > version </TD><TD align="left" > integer </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > release </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > description </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> </TABLE>> ];

"directory" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > sha1_git </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > dir_entries </TD><TD align="left" > bigint[] </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > file_entries </TD><TD align="left" > bigint[] </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > rev_entries </TD><TD align="left" > bigint[] </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> </TABLE>> ];

"directory_entry_dir" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > target </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > name </TD><TD align="left" > unix_path </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > perms </TD><TD align="left" > file_perms </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];

"directory_entry_file" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > target </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > name </TD><TD align="left" > unix_path </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > perms </TD><TD align="left" > file_perms </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];

"directory_entry_rev" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > target </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > name </TD><TD align="left" > unix_path </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > perms </TD><TD align="left" > file_perms </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];

"fetch_history" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > origin </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > date </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > status </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > result </TD><TD align="left" > jsonb </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > stdout </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > stderr </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol7"> </TD></TR> <TR><TD PORT="ltcol8" ></TD><TD align="left" > duration </TD><TD align="left" > interval </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol8"> </TD></TR> </TABLE>> ];

"metadata_provider" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > serial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > provider_name </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > provider_type </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > provider_url </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > metadata </TD><TD align="left" > jsonb </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> </TABLE>> ];

"object_counts" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > object_type </TD><TD align="left" > text </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > value </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > last_update </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > single_update </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];

"object_counts_bucketed" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > line </TD><TD align="left" > serial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > object_type </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > identifier </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > bucket_start </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > bucket_end </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > value </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > last_update </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol7"> </TD></TR> </TABLE>> ];

"occurrence_history" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > origin </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > branch </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > target </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > target_type </TD><TD align="left" > object_type </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > visits </TD><TD align="left" > bigint[] </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > snapshot_branch_id </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol7"> </TD></TR> </TABLE>> ];

"origin" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > type </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > url </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> </TABLE>> ];

"origin_metadata" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > origin_id </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > discovery_date </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > provider_id </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > tool_id </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > metadata </TD><TD align="left" > jsonb </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> </TABLE>> ];

"origin_visit" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > origin </TD><TD align="left" > bigint </TD><TD align="left" > PK </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > visit </TD><TD align="left" > bigint </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > date </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > status </TD><TD align="left" > origin_visit_status </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > metadata </TD><TD align="left" > jsonb </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > snapshot_id </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol6"> </TD></TR> </TABLE>> ];

"person" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > name </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > email </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > fullname </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];

"release" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > sha1_git </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > target </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > date </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > date_offset </TD><TD align="left" > smallint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > name </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > comment </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > author </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol7"> </TD></TR> <TR><TD PORT="ltcol8" ></TD><TD align="left" > synthetic </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol8"> </TD></TR> <TR><TD PORT="ltcol9" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol9"> </TD></TR> <TR><TD PORT="ltcol10" ></TD><TD align="left" > target_type </TD><TD align="left" > object_type </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol10"> </TD></TR> <TR><TD PORT="ltcol11" ></TD><TD align="left" > date_neg_utc_offset </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol11"> </TD></TR> </TABLE>> ];

"revision" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > sha1_git </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > date </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > date_offset </TD><TD align="left" > smallint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > committer_date </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > committer_date_offset </TD><TD align="left" > smallint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > type </TD><TD align="left" > revision_type </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > directory </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol7"> </TD></TR> <TR><TD PORT="ltcol8" ></TD><TD align="left" > message </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol8"> </TD></TR> <TR><TD PORT="ltcol9" ></TD><TD align="left" > author </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol9"> </TD></TR> <TR><TD PORT="ltcol10" ></TD><TD align="left" > committer </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol10"> </TD></TR> <TR><TD PORT="ltcol11" ></TD><TD align="left" > synthetic </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol11"> </TD></TR> <TR><TD PORT="ltcol12" ></TD><TD align="left" > metadata </TD><TD align="left" > jsonb </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol12"> </TD></TR> <TR><TD PORT="ltcol13" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol13"> </TD></TR> <TR><TD PORT="ltcol14" ></TD><TD align="left" > date_neg_utc_offset </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol14"> </TD></TR> <TR><TD PORT="ltcol15" ></TD><TD align="left" > committer_date_neg_utc_offset </TD><TD align="left" > boolean </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol15"> </TD></TR> </TABLE>> ];

"revision_history" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > sha1_git </TD><TD align="left" > PK </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > parent_id </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > parent_rank </TD><TD align="left" > integer </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> </TABLE>> ];

"skipped_content" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > sha1 </TD><TD align="left" > sha1 </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > sha1_git </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > sha256 </TD><TD align="left" > sha256 </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > blake2s256 </TD><TD align="left" > blake2s256 </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> <TR><TD PORT="ltcol5" ></TD><TD align="left" > length </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol5"> </TD></TR> <TR><TD PORT="ltcol6" ></TD><TD align="left" > ctime </TD><TD align="left" > timestamp with time zone </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol6"> </TD></TR> <TR><TD PORT="ltcol7" ></TD><TD align="left" > status </TD><TD align="left" > content_status </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol7"> </TD></TR> <TR><TD PORT="ltcol8" ></TD><TD align="left" > reason </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol8"> </TD></TR> <TR><TD PORT="ltcol9" ></TD><TD align="left" > origin </TD><TD align="left" > bigint </TD><TD align="left" >  </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol9"> </TD></TR> <TR><TD PORT="ltcol10" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol10"> </TD></TR> </TABLE>> ];

"snapshot" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > id </TD><TD align="left" > sha1_git </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> </TABLE>> ];

"snapshot_branch" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > object_id </TD><TD align="left" > bigserial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > name </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > target </TD><TD align="left" > bytea </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > target_type </TD><TD align="left" > snapshot_target </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];

"snapshot_branches" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > snapshot_id </TD><TD align="left" > bigint </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > branch_id </TD><TD align="left" > bigint </TD><TD align="left" > PK </TD><TD align="left" > FK </TD><TD align="left" PORT="rtcol2"> </TD></TR> </TABLE>> ];

"tool" [shape = plaintext, label = < <TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0"> <TR ><TD PORT="ltcol0"> </TD> <TD bgcolor="grey90" border="1" COLSPAN="4"> \N </TD> <TD PORT="rtcol0"></TD></TR>  <TR><TD PORT="ltcol1" ></TD><TD align="left" > id </TD><TD align="left" > serial </TD><TD align="left" > PK </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol1"> </TD></TR> <TR><TD PORT="ltcol2" ></TD><TD align="left" > name </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol2"> </TD></TR> <TR><TD PORT="ltcol3" ></TD><TD align="left" > version </TD><TD align="left" > text </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol3"> </TD></TR> <TR><TD PORT="ltcol4" ></TD><TD align="left" > configuration </TD><TD align="left" > jsonb </TD><TD align="left" >  </TD><TD align="left" >  </TD><TD align="left" PORT="rtcol4"> </TD></TR> </TABLE>> ];



"fetch_history":rtcol2 -> "origin":ltcol1 [label="fetch_history_origin_fkey"];
"occurrence_history":rtcol1 -> "origin":ltcol1 [label="occurrence_history_origin_fkey"];
"origin_metadata":rtcol2 -> "origin":ltcol1 [label="origin_metadata_origin_fkey"];
"origin_metadata":rtcol4 -> "metadata_provider":ltcol1 [label="origin_metadata_provider_fkey"];
"origin_metadata":rtcol5 -> "tool":ltcol1 [label="origin_metadata_tool_fkey"];
"origin_visit":rtcol1 -> "origin":ltcol1 [label="origin_visit_origin_fkey"];
"origin_visit":rtcol6 -> "snapshot":ltcol1 [label="origin_visit_snapshot_id_fkey"];
"release":rtcol7 -> "person":ltcol1 [label="release_author_fkey"];
"revision":rtcol9 -> "person":ltcol1 [label="revision_author_fkey"];
"revision":rtcol10 -> "person":ltcol1 [label="revision_committer_fkey"];
"revision_history":rtcol1 -> "revision":ltcol1 [label="revision_history_id_fkey"];
"skipped_content":rtcol9 -> "origin":ltcol1 [label="skipped_content_origin_fkey"];
"snapshot_branches":rtcol1 -> "snapshot":ltcol1 [label="snapshot_branches_snapshot_id_fkey"];
"snapshot_branches":rtcol2 -> "snapshot_branch":ltcol1 [label="snapshot_branches_branch_id_fkey"];

subgraph "logical_grouping" {
	style = rounded;
	bgcolor = gray95;
	color = gray;
	
	subgraph cluster_meta {
		label = <<b>schema versioning</b><br /> version: >;
		dbversion;
	}

	subgraph cluster_content {
		label = <<b>content</b>>;
		content;
		skipped_content;
	}

	subgraph cluster_directory {
		label = <<b>directories</b>>;
		directory;
		directory_entry_dir;
		directory_entry_file;
		directory_entry_rev;
	}

	subgraph cluster_revision {
		label = <<b>revisions</b>>;
		revision;
		revision_history;
		person;
	}

	subgraph cluster_release {
		label = <<b>releases</b>>;
		release;
	}

	subgraph cluster_snapshots {
		label = <<b>snapshots</b>>;
		occurrence;
		occurrence_history;
		snapshot;
		snapshot_branch;
		snapshot_branches;
	}

	subgraph cluster_origins {
		label = <<b>origins</b>>;
		origin;
		fetch_history;
		origin_visit;
	}

	subgraph cluster_entity {
		label = <<b>entities</b>>;
		entity;
		entity_history;
		entity_equivalence;
		listable_entity;
		list_history;
	}

	subgraph cluster_metadata {
                label = <<b>metadata</b>>;
                metadata_provider;
                origin_metadata;
		tool;
	}

	subgraph cluster_statistics {
                label = <<b>statistics</b>>;
                object_counts;
	}

	{
		edge [style = dashed];

		# "rtcolN" identifies the N-th row in a table, as a source
		# "ltcolN" identifies the N-th row in a table, as a destination
		"directory_entry_dir":rtcol2 -> "directory":ltcol1;
		"directory_entry_file":rtcol2 -> "content":ltcol2;
		"directory_entry_file":rtcol2 -> "skipped_content":ltcol2;
		"directory_entry_rev":rtcol2 -> "revision":ltcol1;
		"directory":rtcol2 -> "directory_entry_dir":ltcol1;
		"directory":rtcol3 -> "directory_entry_file":ltcol1;
		"directory":rtcol4 -> "directory_entry_rev":ltcol1;
		"occurrence":rtcol3 -> "revision":ltcol1;
		"occurrence_history":rtcol3 -> "revision":ltcol1;
		"release":rtcol2 -> "revision":ltcol1;
		"revision":rtcol9 -> "directory":ltcol1;
		"revision_history":rtcol2 -> "revision":ltcol1;
		"entity_history":rtcol3 -> "entity_history":ltcol2;
		"entity_history":rtcol10 -> "listable_entity":ltcol1;
	}
}
}
