Class: Bookflow::AppleBooks::Database
- Inherits:
-
Object
- Object
- Bookflow::AppleBooks::Database
- Defined in:
- lib/bookflow/apple_books/database.rb
Constant Summary collapse
- REQUIRED_ANNOTATION_COLUMNS =
%w[ Z_PK ZANNOTATIONASSETID ZANNOTATIONDELETED ZANNOTATIONTYPE ZANNOTATIONSTYLE ZANNOTATIONCREATIONDATE ZANNOTATIONMODIFICATIONDATE ZANNOTATIONNOTE ZANNOTATIONREPRESENTATIVETEXT ZANNOTATIONSELECTEDTEXT ZPLABSOLUTEPHYSICALLOCATION ZPLLOCATIONRANGESTART ZPLLOCATIONRANGEEND ].freeze
- REQUIRED_LIBRARY_COLUMNS =
%w[ ZASSETID ZTITLE ZAUTHOR ZPATH ].freeze
Instance Method Summary collapse
- #annotation_rows ⇒ Object
- #book_rows ⇒ Object
-
#initialize(annotation_db_path:, library_db_path:) ⇒ Database
constructor
A new instance of Database.
- #valid_schema? ⇒ Boolean
- #validate_schema! ⇒ Object
Constructor Details
#initialize(annotation_db_path:, library_db_path:) ⇒ Database
Returns a new instance of Database.
30 31 32 33 |
# File 'lib/bookflow/apple_books/database.rb', line 30 def initialize(annotation_db_path:, library_db_path:) @annotation_db_path = annotation_db_path.to_s @library_db_path = library_db_path.to_s end |
Instance Method Details
#annotation_rows ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/bookflow/apple_books/database.rb', line 55 def annotation_rows open_readonly(@annotation_db_path) do |db| db.execute(" SELECT Z_PK, ZANNOTATIONASSETID, ZANNOTATIONDELETED, ZANNOTATIONTYPE, ZANNOTATIONSTYLE,\n ZANNOTATIONCREATIONDATE, ZANNOTATIONMODIFICATIONDATE, ZANNOTATIONNOTE,\n ZANNOTATIONREPRESENTATIVETEXT, ZANNOTATIONSELECTEDTEXT, ZPLABSOLUTEPHYSICALLOCATION,\n ZPLLOCATIONRANGESTART, ZPLLOCATIONRANGEEND\n FROM ZAEANNOTATION\n WHERE COALESCE(ZANNOTATIONDELETED, 0) = 0\n SQL\n end\nend\n") |
#book_rows ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/bookflow/apple_books/database.rb', line 68 def book_rows open_readonly(@library_db_path) do |db| db.execute(" SELECT ZASSETID, ZTITLE, ZAUTHOR, ZPATH\n FROM ZBKLIBRARYASSET\n WHERE ZASSETID IS NOT NULL\n SQL\n end\nend\n") |
#valid_schema? ⇒ Boolean
35 36 37 38 39 40 |
# File 'lib/bookflow/apple_books/database.rb', line 35 def valid_schema? validate_schema! true rescue ArgumentError false end |
#validate_schema! ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/bookflow/apple_books/database.rb', line 42 def validate_schema! validate_database!( path: @annotation_db_path, table: "ZAEANNOTATION", columns: REQUIRED_ANNOTATION_COLUMNS ) validate_database!( path: @library_db_path, table: "ZBKLIBRARYASSET", columns: REQUIRED_LIBRARY_COLUMNS ) end |