mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-02 10:55:30 -04:00
Separate insert_id
into titles and entries
This commit is contained in:
parent
667d390be4
commit
c7be0e0e7c
@ -14,11 +14,10 @@ class Entry
|
||||
id = storage.get_entry_id @zip_path, File.signature(@zip_path)
|
||||
if id.nil?
|
||||
id = random_str
|
||||
storage.insert_id({
|
||||
path: @zip_path,
|
||||
id: id,
|
||||
title_signature: nil,
|
||||
entry_signature: File.signature(@zip_path).to_s,
|
||||
storage.insert_entry_id({
|
||||
path: @zip_path,
|
||||
id: id,
|
||||
signature: File.signature(@zip_path).to_s,
|
||||
})
|
||||
end
|
||||
@id = id
|
||||
|
@ -13,11 +13,10 @@ class Title
|
||||
id = storage.get_title_id dir, signature
|
||||
if id.nil?
|
||||
id = random_str
|
||||
storage.insert_id({
|
||||
path: dir,
|
||||
id: id,
|
||||
title_signature: signature.to_s,
|
||||
entry_signature: nil,
|
||||
storage.insert_title_id({
|
||||
path: dir,
|
||||
id: id,
|
||||
signature: signature.to_s,
|
||||
})
|
||||
end
|
||||
@id = id
|
||||
|
@ -15,16 +15,21 @@ def verify_password(hash, pw)
|
||||
end
|
||||
|
||||
class Storage
|
||||
@@insert_ids = [] of IDTuple
|
||||
@@insert_entry_ids = [] of EntryID
|
||||
@@insert_title_ids = [] of TitleID
|
||||
|
||||
@path : String
|
||||
@db : DB::Database?
|
||||
|
||||
alias IDTuple = NamedTuple(
|
||||
alias EntryID = NamedTuple(
|
||||
path: String,
|
||||
id: String,
|
||||
entry_signature: String?,
|
||||
title_signature: String?)
|
||||
signature: String?)
|
||||
|
||||
alias TitleID = NamedTuple(
|
||||
path: String,
|
||||
id: String,
|
||||
signature: String?)
|
||||
|
||||
use_default
|
||||
|
||||
@ -314,8 +319,12 @@ class Storage
|
||||
id
|
||||
end
|
||||
|
||||
def insert_id(tp : IDTuple)
|
||||
@@insert_ids << tp
|
||||
def insert_entry_id(tp)
|
||||
@@insert_entry_ids << tp
|
||||
end
|
||||
|
||||
def insert_title_id(tp)
|
||||
@@insert_title_ids << tp
|
||||
end
|
||||
|
||||
def bulk_insert_ids
|
||||
@ -323,20 +332,22 @@ class Storage
|
||||
get_db do |db|
|
||||
db.transaction do |tran|
|
||||
conn = tran.connection
|
||||
@@insert_ids.each do |tp|
|
||||
@@insert_title_ids.each do |tp|
|
||||
path = Path.new(tp[:path])
|
||||
.relative_to(Config.current.library_path).to_s
|
||||
if tp[:title_signature]
|
||||
conn.exec "insert into titles values (?, ?, ?)", tp[:id],
|
||||
path, tp[:title_signature].to_s
|
||||
else
|
||||
conn.exec "insert into ids values (?, ?, ?)", path, tp[:id],
|
||||
tp[:entry_signature].to_s
|
||||
end
|
||||
conn.exec "insert into titles values (?, ?, ?)", tp[:id],
|
||||
path, tp[:signature].to_s
|
||||
end
|
||||
@@insert_entry_ids.each do |tp|
|
||||
path = Path.new(tp[:path])
|
||||
.relative_to(Config.current.library_path).to_s
|
||||
conn.exec "insert into ids values (?, ?, ?)", path, tp[:id],
|
||||
tp[:signature].to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
@@insert_ids.clear
|
||||
@@insert_entry_ids.clear
|
||||
@@insert_title_ids.clear
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user