alternate database structure with entry, (new_)file, dir works in terms of DB and SQL alchemy, tomorrow we rewrite the jobs to really use the new structure

This commit is contained in:
2021-01-18 21:40:46 +11:00
parent 4053919def
commit 5285bf66ab
3 changed files with 249 additions and 16 deletions

View File

@@ -2,11 +2,43 @@ ALTER DATABASE pa SET timezone TO 'Australia/Victoria';
create table settings( id integer, import_path varchar, last_import_date float, constraint pk_settings_id primary key(id) );
create table file_type ( id integer, name varchar(32) unique, constraint pk_file_type_id primary key(id) );
insert into file_type values ( 1, 'Directory' );
insert into file_type values ( 2, 'Image' );
insert into file_type values ( 3, 'Video' );
insert into file_type values ( 4, 'Unknown' );
create table FILE_TYPE ( ID integer, NAME varchar(32) unique, constraint PK_FILE_TYPE_ID primary key(ID) );
create table ENTRY( ID integer, NAME varchar(128), TYPE integer, constraint PK_ENTRY_ID primary key(ID) );
create table NEW_FILE ( EID integer, SIZE_MB integer, HASH varchar(34), THUMBNAIL varchar,
constraint PK_FILE_ID primary key(EID),
constraint FK_FILE_ENTRY_ID foreign key (EID) references ENTRY(ID) );
create table DIR ( EID integer, PATH_PREFIX varchar(256),
constraint PK_DIR_ID primary key(EID),
constraint FK_DIR_ENTRY_ID foreign key (EID) references ENTRY(ID) );
create table ENTRY_DIR_LINK ( entry_id integer, dir_eid integer,
constraint PK_EDL_entry_id_dir_eid primary key (entry_id, dir_eid),
constraint FK_EDL_ENTRY_ID foreign key (ENTRY_ID) references ENTRY(ID),
constraint FK_EDL_DIR_ID foreign key (DIR_EID) references DIR(EID) );
-- ENTRY( 1, 'images_to_process', D)
-- ENTRY( 2, 'IMG_9289.JPG', F )
-- ENTRY( 3, 'IMG_9289.JPG', F )
-- ENTRY( 4, 'TEST', D )
-- ENTRY( 5, 'a.jpg', F ) ; -- in TEST/
-- ENTRY( 6, 'new_img_dir/', F )
-- ENTRY( 7, 'b.jpg', F ) ; -- in new_img_dir/
--
-- DIR( 1, 'static/images_to_process/'
-- NEW_FILE( 3, size, hash, thumb )
-- DIR( 4, 'static/images_to_process/TEST/'
-- NEW_FILE( 5, size, hash, thumb )
-- DIR( 6, 'static/new_img_dir/'
-- NEW_FILE( 7, size, hash, thumb )
--
-- DIR, ENTRY ( 1, 2 )
-- DIR, ENTRY ( 1, 3 )
-- DIR, ENTRY ( 1, 4 )
-- DIR, ENTRY ( 4, 5 )
-- DIR, ENTRY ( 6, 7 )
create table file( id integer, name varchar(128), size_MB integer, type varchar(20), path_prefix varchar(256), hash varchar(34), thumbnail varchar,
constraint pk_photos_id primary key(id) );
@@ -32,6 +64,10 @@ create table job (
num_files integer, current_file_num integer, current_file varchar(256), wait_for integer, pa_job_state varchar(48),
constraint pk_job_id primary key(id) );
-- used to pass / keep extra values, e.g. num_files for jobs that have sets of files, or out* for adding output from jobs that you want to pass to next job in the chain
create table jobextra ( id integer, job_id integer, name varchar(32), value varchar(1024),
constraint pk_jobextra_id primary key(id), constraint fk_jobextra_job_id foreign key(job_id) references job(id) );
create table joblog ( id integer, job_id integer, log_date timestamptz, log varchar,
constraint pk_jl_id primary key(id), constraint fk_jl_job_id foreign key(job_id) references job(id) );
@@ -40,6 +76,8 @@ create table pa_job_manager ( id integer, state varchar(128), num_active_jobs in
create table pa_job_manager_fe_message ( id integer, job_id integer, alert varchar(16), message varchar(1024), constraint pa_job_manager_fe_acks_id primary key(id), constraint fk_pa_job_manager_fe_message_job_id foreign key(job_id) references job(id) );
create sequence file_id_seq;
create sequence file_type_id_seq;
create sequence jobextra_id_seq;
create sequence joblog_id_seq;
create sequence job_id_seq;
create sequence person_id_seq;
@@ -48,6 +86,11 @@ create sequence settings_id_seq;
create sequence pa_job_manager_id_seq;
create sequence pa_job_manager_fe_message_id_seq;
insert into FILE_TYPE values ( (select nextval('file_type_id_seq')), 'Directory' );
insert into FILE_TYPE values ( (select nextval('file_type_id_seq')), 'Image' );
insert into FILE_TYPE values ( (select nextval('file_type_id_seq')), 'Video' );
insert into FILE_TYPE values ( (select nextval('file_type_id_seq')), 'Unknown' );
-- fake data only for making testing easier
insert into person values ( (select nextval('person_id_seq')), 'dad', 'Damien', 'De Paoli' );
insert into person values ( (select nextval('person_id_seq')), 'mum', 'Mandy', 'De Paoli' );