From 479e71e90146b1067120faf489af1b13a5a0cf3d Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 14 Apr 2018 16:39:52 -0400 Subject: sqlite3 some stuff & rearrange files, dlang, org --- src/sdp/output/sqlite_discrete.d | 491 +++++++++++++++++++-------------------- 1 file changed, 234 insertions(+), 257 deletions(-) (limited to 'src/sdp/output/sqlite_discrete.d') diff --git a/src/sdp/output/sqlite_discrete.d b/src/sdp/output/sqlite_discrete.d index 443fb3b..40e0b15 100644 --- a/src/sdp/output/sqlite_discrete.d +++ b/src/sdp/output/sqlite_discrete.d @@ -3,18 +3,75 @@ import sdp.output; import std.file, std.conv : to; +template SQLiteDiscreteDbRun() { + void SQLiteDiscreteDbRun(Db,St,O)( + auto ref Db db, + auto ref St db_statement, + auto ref O opt_action, + string note, + ) { + debug(sql_statement) { + writeln(db_statement); + } + try { + db.run( + "\nBEGIN;\n" ~ + db_statement ~ + "\nCOMMIT;\n" + ); + } catch (ErrnoException ex) { + writeln("ERROR SQLite : ", ex); + } catch (Exception ex) { + writeln("ERROR SQLite : ", ex); + } + if (opt_action.debug_do) { + writeln(note); + if (opt_action.verbose) { + writeln(db_statement); + } + } + } +} template SQLiteDiscreteBuildTablesAndPopulate() { void SQLiteDiscreteBuildTablesAndPopulate(D,I)( auto ref const D doc_abstraction, - auto ref I doc_matters, + auto ref I doc_matters, ) { import d2sqlite3; import std.typecons : Nullable; mixin SiSUoutputRgxInit; static auto rgx = Rgx(); + auto pth_sqlite = SiSUpathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language); + pth_sqlite.base.mkdirRecurse; + auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename)); + template SQLiteDiscreteDbStatementComposite() { + void SQLiteDiscreteDbStatementComposite(Db,D,I)( + auto ref Db db, + auto ref const D doc_abstraction, + auto ref I doc_matters, + ) { + { + string _db_statement; + { + _db_statement ~= SQLiteDiscreteTablesReCreate!()(); + _db_statement ~= SQLiteDiscreteInsertMetadata!()(doc_matters); + _db_statement ~= SQLiteDiscreteInsertDocObjectsLoop!()(doc_matters.xml.keys_seq.sql, 1); // FIX + SQLiteDiscreteDbRun!()(db, _db_statement, doc_matters.opt.action, "table CREATE Tables, INSERT DocObjects"); + } + db.close; + } + } + } + template SQLinsertDelimiter() { + auto SQLinsertDelimiter(string _txt) { + _txt = _txt + .replaceAll(rgx.quotation_mark_sql_insert_delimiter, "$0$0"); + return _txt; + } + } template SQLiteFormatAndLoadObject() { auto SQLiteFormatAndLoadObject(I)( - auto ref I doc_matters, + auto ref I doc_matters, ) { mixin SiSUoutputRgxInit; struct sqlite_format_and_load_objects { @@ -459,27 +516,41 @@ template SQLiteDiscreteBuildTablesAndPopulate() { return sqlite_format_and_load_objects(); } } - template SQLiteInstruct() { - void SQLiteInstruct(Db,I)( - Db db, - auto ref I doc_matters, - ) { - db.run(" + template SQLiteDiscreteTablesReCreate() { + string SQLiteDiscreteTablesReCreate()() { + string _sql_instruct; + _sql_instruct = format(q"¶ + DROP INDEX IF EXISTS ocn; + DROP INDEX IF EXISTS digest_clean; + DROP INDEX IF EXISTS digest_all; + DROP INDEX IF EXISTS clean; + DROP INDEX IF EXISTS lev0; + DROP INDEX IF EXISTS lev1; + DROP INDEX IF EXISTS lev2; + DROP INDEX IF EXISTS lev3; + DROP INDEX IF EXISTS lev4; + DROP INDEX IF EXISTS lev5; + DROP INDEX IF EXISTS lev6; + DROP INDEX IF EXISTS title; + DROP INDEX IF EXISTS creator_author; + DROP INDEX IF EXISTS src_filename; + DROP INDEX IF EXISTS language_document_char; + DROP INDEX IF EXISTS classify_topic_register; DROP TABLE IF EXISTS metadata_and_text; DROP TABLE IF EXISTS doc_objects; DROP TABLE IF EXISTS urls; - BEGIN; CREATE TABLE metadata_and_text ( - tid BIGINT PRIMARY KEY, + tid INTEGER PRIMARY KEY, + /* src_filename_composite VARCHAR(256) NOT NULL UNIQUE, /* z pod name if any + src filename + language code */ title VARCHAR(800) NOT NULL, - title_main VARCHAR(400) NULL, /*NOT*/ + title_main VARCHAR(400) NOT NULL, title_sub VARCHAR(400) NULL, title_short VARCHAR(400) NULL, title_edition VARCHAR(10) NULL, title_note VARCHAR(2500) NULL, title_language VARCHAR(100) NULL, title_language_char VARCHAR(6) NULL, - creator_author VARCHAR(600) NULL, + creator_author VARCHAR(600) NOT NULL, creator_author_email VARCHAR(100) NULL, creator_author_hon VARCHAR(100) NULL, creator_author_nationality VARCHAR(100) NULL, @@ -493,7 +564,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() { creator_audio VARCHAR(600) NULL, creator_video VARCHAR(600) NULL, language_document VARCHAR(100) NULL, - language_document_char VARCHAR(6) NULL, /*NOT*/ + language_document_char VARCHAR(6) NOT NULL, language_original VARCHAR(100) NULL, language_original_char VARCHAR(6) NULL, date_added_to_site VARCHAR(10) NULL, @@ -542,18 +613,20 @@ template SQLiteDiscreteBuildTablesAndPopulate() { notes_prefix_a TEXT NULL, notes_prefix_b TEXT NULL, notes_suffix TEXT NULL, - src_filename VARCHAR(256) NULL, + src_filename VARCHAR(256) NOT NULL, src_fingerprint VARCHAR(256) NULL, src_filesize VARCHAR(10) NULL, src_wordcount VARCHAR(10) NULL, + pod_name VARCHAR(256) NULL, /* zipped pod, work to be done here */ + pod_fingerprint VARCHAR(256) NULL, /* zipped pod, work to be done here */ + pod_size VARCHAR(10) NULL, /* zipped pod, work to be done here */ src_text TEXT NULL, fulltext TEXT NULL, links TEXT NULL ); - /* */ CREATE TABLE doc_objects ( - lid BIGINT PRIMARY KEY, - metadata_tid BIGINT REFERENCES metadata_and_text, + lid INTEGER PRIMARY KEY, + metadata_tid INTEGER REFERENCES metadata_and_text, ocn SMALLINT, ocnd VARCHAR(6), ocns VARCHAR(6), @@ -585,36 +658,49 @@ template SQLiteDiscreteBuildTablesAndPopulate() { digest_all CHAR(256), types CHAR(1) NULL ); - COMMIT - "); - Statement insert_metadata = db.prepare(" + CREATE INDEX idx_ocn ON doc_objects(ocn); + CREATE INDEX idx_digest_clean ON doc_objects(digest_clean); + CREATE INDEX idx_digest_all ON doc_objects(digest_all); + CREATE INDEX idx_clean ON doc_objects(clean); + CREATE INDEX idx_lev0 ON doc_objects(lev0); + CREATE INDEX idx_lev1 ON doc_objects(lev1); + CREATE INDEX idx_lev2 ON doc_objects(lev2); + CREATE INDEX idx_lev3 ON doc_objects(lev3); + CREATE INDEX idx_lev4 ON doc_objects(lev4); + CREATE INDEX idx_lev5 ON doc_objects(lev5); + CREATE INDEX idx_lev6 ON doc_objects(lev6); + CREATE INDEX idx_title ON metadata_and_text(title); + CREATE INDEX idx_author ON metadata_and_text(creator_author); + CREATE INDEX idx_filename ON metadata_and_text(src_filename); + CREATE INDEX idx_language ON metadata_and_text(language_document_char); + CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register); + ¶",); + return _sql_instruct; + } + } + template SQLiteDiscreteInsertMetadata() { + string SQLiteDiscreteInsertMetadata(I)( + auto ref I doc_matters, + ) { + string _insert_metadata; + _insert_metadata = format(q"¶ INSERT INTO metadata_and_text ( - tid, + src_filename, title, title_main, title_sub, title_short, title_edition, - title_note, title_language, - title_language_char, + classify_dewey, + classify_keywords, + classify_loc, + classify_subject, + classify_topic_register, creator_author, creator_author_email, - creator_author_hon, - creator_author_nationality, - creator_editor, - creator_contributor, creator_illustrator, - creator_photographer, creator_translator, - creator_prepared_by, - creator_digitized_by, - creator_audio, - creator_video, - language_document, - language_document_char, - language_original, - language_original_char, date_added_to_site, date_available, date_created, @@ -622,17 +708,18 @@ template SQLiteDiscreteBuildTablesAndPopulate() { date_modified, date_published, date_valid, - date_translated, - date_original_publication, - date_generated, - publisher, + identifier_isbn, + identifier_oclc, + language_document, + language_document_char, + notes_abstract, + notes_description, original_publisher, original_language, original_language_char, original_source, - original_institution, - original_nationality, original_title, + publisher, rights_copyright, rights_copyright_audio, rights_copyright_cover, @@ -641,205 +728,113 @@ template SQLiteDiscreteBuildTablesAndPopulate() { rights_copyright_text, rights_copyright_translation, rights_copyright_video, - rights_license, - identifier_oclc, - identifier_isbn, - classify_topic_register, - classify_subject, - classify_loc, - classify_dewey, - classify_keywords, - notes_abstract, - notes_description, - notes_comment, - notes_coverage, - notes_relation, - notes_history, - notes_type, - notes_format, - notes_prefix, - notes_prefix_a, - notes_prefix_b, - notes_suffix, - src_filename, - src_fingerprint, - src_filesize, - src_wordcount, - src_text, - fulltext, - links + rights_license ) VALUES ( - :tid, - :title, - :title_main, - :title_sub, - :title_short, - :title_edition, - :title_note, - :title_language, - :title_language_char, - :creator_author, - :creator_author_email, - :creator_author_hon, - :creator_author_nationality, - :creator_editor, - :creator_contributor, - :creator_illustrator, - :creator_photographer, - :creator_translator, - :creator_prepared_by, - :creator_digitized_by, - :creator_audio, - :creator_video, - :language_document, - :language_document_char, - :language_original, - :language_original_char, - :date_added_to_site, - :date_available, - :date_created, - :date_issued, - :date_modified, - :date_published, - :date_valid, - :date_translated, - :date_original_publication, - :date_generated, - :publisher, - :original_publisher, - :original_language, - :original_language_char, - :original_source, - :original_institution, - :original_nationality, - :original_title, - :rights_copyright, - :rights_copyright_audio, - :rights_copyright_cover, - :rights_copyright_illustrations, - :rights_copyright_photographs, - :rights_copyright_text, - :rights_copyright_translation, - :rights_copyright_video, - :rights_license, - :identifier_oclc, - :identifier_isbn, - :classify_topic_register, - :classify_subject, - :classify_loc, - :classify_dewey, - :classify_keywords, - :notes_abstract, - :notes_description, - :notes_comment, - :notes_coverage, - :notes_relation, - :notes_history, - :notes_type, - :notes_format, - :notes_prefix, - :notes_prefix_a, - :notes_prefix_b, - :notes_suffix, - :src_filename, - :src_fingerprint, - :src_filesize, - :src_wordcount, - :src_text, - :fulltext, - :links - ) - "); - // insert_metadata.bind(":tid", ); // unique identifier you could try use sha of title author & language? or auto increment?? - insert_metadata.bind(":title", doc_matters.conf_make_meta.meta.title_full); - insert_metadata.bind(":title_main", doc_matters.conf_make_meta.meta.title_main); - insert_metadata.bind(":title_sub", doc_matters.conf_make_meta.meta.title_subtitle); - insert_metadata.bind(":title_short", doc_matters.conf_make_meta.meta.title_short); // - insert_metadata.bind(":title_edition", doc_matters.conf_make_meta.meta.title_edition); - insert_metadata.bind(":title_language", doc_matters.conf_make_meta.meta.title_language); - // insert_metadata.bind(":title_language_char", doc_matters.conf_make_meta.meta.title_language_char); - insert_metadata.bind(":classify_dewey", doc_matters.conf_make_meta.meta.classify_dewey); - insert_metadata.bind(":classify_keywords", doc_matters.conf_make_meta.meta.classify_keywords); - insert_metadata.bind(":classify_loc", doc_matters.conf_make_meta.meta.classify_loc); - insert_metadata.bind(":classify_subject", doc_matters.conf_make_meta.meta.classify_subject); - insert_metadata.bind(":classify_topic_register", doc_matters.conf_make_meta.meta.classify_topic_register); - insert_metadata.bind(":creator_author", doc_matters.conf_make_meta.meta.creator_author); - insert_metadata.bind(":creator_author_email", doc_matters.conf_make_meta.meta.creator_author_email); - // insert_metadata.bind(":creator_editor", doc_matters.conf_make_meta.meta.creator_editor); - // insert_metadata.bind(":creator_contributor", doc_matters.conf_make_meta.meta.creator_contributor); - insert_metadata.bind(":creator_illustrator", doc_matters.conf_make_meta.meta.creator_illustrator); - // insert_metadata.bind(":creator_photographer", doc_matters.conf_make_meta.meta.creator_photographer); - insert_metadata.bind(":creator_translator", doc_matters.conf_make_meta.meta.creator_translator); - // insert_metadata.bind(":creator_audio", doc_matters.conf_make_meta.meta.creator_audio); - // insert_metadata.bind(":creator_video", doc_matters.conf_make_meta.meta.creator_video); - insert_metadata.bind(":date_added_to_site", doc_matters.conf_make_meta.meta.date_added_to_site); - insert_metadata.bind(":date_available", doc_matters.conf_make_meta.meta.date_available); - insert_metadata.bind(":date_created", doc_matters.conf_make_meta.meta.date_created); - insert_metadata.bind(":date_issued", doc_matters.conf_make_meta.meta.date_issued); - insert_metadata.bind(":date_modified", doc_matters.conf_make_meta.meta.date_modified); - insert_metadata.bind(":date_published", doc_matters.conf_make_meta.meta.date_published); - insert_metadata.bind(":date_valid", doc_matters.conf_make_meta.meta.date_valid); - // insert_metadata.bind(":date_translated", doc_matters.conf_make_meta.meta.date_translated); - // insert_metadata.bind(":date_original_publication", doc_matters.conf_make_meta.meta.date_original_publication); - // insert_metadata.bind(":date_generated", doc_matters.conf_make_meta.meta.date_generated); - insert_metadata.bind(":identifier_isbn", doc_matters.conf_make_meta.meta.identifier_isbn); - insert_metadata.bind(":identifier_oclc", doc_matters.conf_make_meta.meta.identifier_oclc); - insert_metadata.bind(":language_document", doc_matters.conf_make_meta.meta.language_document); - insert_metadata.bind(":language_document_char", doc_matters.conf_make_meta.meta.language_document_char); - // insert_metadata.bind(":language_original", doc_matters.conf_make_meta.meta.language_original); - // insert_metadata.bind(":language_original_char", doc_matters.conf_make_meta.meta.language_original_char); - insert_metadata.bind(":notes_abstract", doc_matters.conf_make_meta.meta.notes_abstract); - insert_metadata.bind(":notes_description", doc_matters.conf_make_meta.meta.notes_description); - insert_metadata.bind(":original_publisher", doc_matters.conf_make_meta.meta.original_publisher); - insert_metadata.bind(":original_language", doc_matters.conf_make_meta.meta.original_language); - insert_metadata.bind(":original_language_char", doc_matters.conf_make_meta.meta.original_language_char); - insert_metadata.bind(":original_source", doc_matters.conf_make_meta.meta.original_source); - insert_metadata.bind(":original_title", doc_matters.conf_make_meta.meta.original_title); - insert_metadata.bind(":publisher", doc_matters.conf_make_meta.meta.publisher); - // insert_metadata.bind(":rights", doc_matters.conf_make_meta.meta.rights); - insert_metadata.bind(":rights_copyright", doc_matters.conf_make_meta.meta.rights_copyright); - insert_metadata.bind(":rights_copyright_audio", doc_matters.conf_make_meta.meta.rights_copyright_audio); - insert_metadata.bind(":rights_copyright_cover", doc_matters.conf_make_meta.meta.rights_copyright_cover); - insert_metadata.bind(":rights_copyright_illustrations", doc_matters.conf_make_meta.meta.rights_copyright_illustrations); - insert_metadata.bind(":rights_copyright_photographs", doc_matters.conf_make_meta.meta.rights_copyright_photographs); - // insert_metadata.bind(":rights_copyright_preparation", doc_matters.conf_make_meta.meta.rights_preparation); - insert_metadata.bind(":rights_copyright_text", doc_matters.conf_make_meta.meta.rights_copyright_text); - insert_metadata.bind(":rights_copyright_translation", doc_matters.conf_make_meta.meta.rights_copyright_translation); - insert_metadata.bind(":rights_copyright_video", doc_matters.conf_make_meta.meta.rights_copyright_video); - // insert_metadata.bind(":rights_copyright_digitization", doc_matters.conf_make_meta.meta.rights_digitization); - // insert_metadata.bind(":rights_copyright_audio", doc_matters.conf_make_meta.meta.rights_audio); - // insert_metadata.bind(":rights_copyright_video", doc_matters.conf_make_meta.meta.rights_video); - insert_metadata.bind(":rights_license", doc_matters.conf_make_meta.meta.rights_license); - // insert_metadata.bind(":src_filename", doc_matters.conf_make_meta.meta.src_filename); - // insert_metadata.bind(":src_fingerprint", doc_matters.conf_make_meta.meta.src_fingerprint); - // insert_metadata.bind(":src_filesize", doc_matters.conf_make_meta.meta.src_filesize); - // insert_metadata.bind(":src_wordcount", doc_matters.conf_make_meta.meta.src_wordcount); - // insert_metadata.bind(":src_text", doc_matters.conf_make_meta.meta.src_text); - // insert_metadata.bind(":fulltext", doc_matters.conf_make_meta.meta.fulltext); - // insert_metadata.bind(":links", doc_matters.conf_make_meta.meta.links); - insert_metadata.execute(); insert_metadata.reset(); - /+ watch +/ - if ((doc_matters.opt.action.verbose)) { - writeln("sql statement executed"); - } - assert(db.totalChanges == 1); - // + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s' + ); + ¶", + SQLinsertDelimiter!()(doc_matters.src.filename), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_full), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_main), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_subtitle), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_short), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_edition), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_language), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_dewey), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_keywords), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_loc), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_subject), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_topic_register), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_author), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_author_email), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_illustrator), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_translator), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_added_to_site), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_available), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_created), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_issued), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_modified), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_published), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_valid), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.identifier_isbn), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.identifier_oclc), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.language_document), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.language_document_char), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.notes_abstract), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.notes_description), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_publisher), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_language), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_language_char), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_source), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_title), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.publisher), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_audio), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_cover), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_illustrations), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_photographs), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_text), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_translation), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_video), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_license) + ); + return _insert_metadata; } } - template SQLiteObjectsLoop() { - void SQLiteObjectsLoop(P)( - auto ref P doc_parts, + template SQLiteDiscreteInsertDocObjectsLoop() { + string SQLiteDiscreteInsertDocObjectsLoop(P,I)( + auto ref P doc_parts, + auto ref I tid, ) { string insertDocObjectsRow(O)(O obj) { - auto sql_insert_delimiter(string _txt) { - _txt = _txt - .replaceAll(rgx.quotation_mark_sql_insert_delimiter, "$0$0"); - return _txt; - } string _insert_doc_objects_row; - _insert_doc_objects_row = format(q"¶ + _insert_doc_objects_row = format(q"¶ INSERT INTO doc_objects ( + metadata_tid, ocn, clean, body, @@ -848,6 +843,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() { t_is ) VALUES ( + %d, %s, '%s', '%s', @@ -856,24 +852,20 @@ template SQLiteDiscreteBuildTablesAndPopulate() { '%s' ); ¶", + 1, obj.ocn, - sql_insert_delimiter(obj_txt["text"]), - sql_insert_delimiter(obj_txt["html"]), + SQLinsertDelimiter!()(obj_txt["text"]), + SQLinsertDelimiter!()(obj_txt["html"]), obj.heading_lev_markup, obj.is_of, obj.is_a, ); return _insert_doc_objects_row; } - auto pth_sqlite = SiSUpathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language); - pth_sqlite.base.mkdirRecurse; - auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename)); - SQLiteInstruct!()(db, doc_matters); // consider best location, need to feed individual objects for sqlite table: doc_objects, possibly a separate template? auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc_matters); string[string] obj_txt; string doc_text; string[] _insert_doc_objects; - _insert_doc_objects ~= "BEGIN;\n"; foreach (part; doc_parts) { foreach (obj; doc_abstraction[part]) { switch (obj.of_part) { @@ -1023,24 +1015,9 @@ template SQLiteDiscreteBuildTablesAndPopulate() { } } // loop closes } - _insert_doc_objects ~= "COMMIT"; - debug(sql_statement) { - writeln("#+BEGIN_SRC sql\n", _insert_doc_objects.join, "\n#+END_SRC"); - } - std.utf.validate(_insert_doc_objects.join); // TODO - db.run(_insert_doc_objects.join.to!(char[]).toUTF8); + return _insert_doc_objects.join.to!(char[]).toUTF8; } } - SQLiteObjectsLoop!()(doc_matters.xml.keys_seq.sql); - } -} -template SQLiteDiscreteTablesCreate() { - void SQLiteDiscreteTablesCreate()() { - writeln("table create"); - } -} -template SQLiteDiscreteTablesDrop() { - void SQLiteDiscreteTablesDrop()() { - writeln("table drop"); + SQLiteDiscreteDbStatementComposite!()(db, doc_abstraction, doc_matters); } } -- cgit v1.2.3