Skip to content

Commit 6c11173

Browse files
committed
src: refactor sqlite backup job
1 parent 24b1650 commit 6c11173

File tree

1 file changed

+10
-24
lines changed

1 file changed

+10
-24
lines changed

src/node_sqlite.cc

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ class BackupJob : public ThreadPoolWork {
451451
std::string dest_db,
452452
int pages,
453453
Local<Function> progressFunc)
454-
: ThreadPoolWork(env, "node_sqlite3.BackupJob"),
454+
: ThreadPoolWork(env, "node.sqlite.BackupJob"),
455455
env_(env),
456456
source_(source),
457457
pages_(pages),
@@ -498,7 +498,7 @@ class BackupJob : public ThreadPoolWork {
498498

499499
if (!(backup_status_ == SQLITE_OK || backup_status_ == SQLITE_DONE ||
500500
backup_status_ == SQLITE_BUSY || backup_status_ == SQLITE_LOCKED)) {
501-
HandleBackupError(resolver, backup_status_);
501+
HandleBackupError(resolver);
502502
return;
503503
}
504504

@@ -549,11 +549,6 @@ class BackupJob : public ThreadPoolWork {
549549
}
550550

551551
void Finalize() {
552-
Cleanup();
553-
source_->RemoveBackup(this);
554-
}
555-
556-
void Cleanup() {
557552
if (backup_) {
558553
sqlite3_backup_finish(backup_);
559554
backup_ = nullptr;
@@ -564,29 +559,20 @@ class BackupJob : public ThreadPoolWork {
564559
sqlite3_close_v2(dest_);
565560
dest_ = nullptr;
566561
}
562+
563+
source_->RemoveBackup(this);
567564
}
568565

569566
private:
570567
void HandleBackupError(Local<Promise::Resolver> resolver) {
571568
Local<Object> e;
572-
if (!CreateSQLiteError(env()->isolate(), dest_).ToLocal(&e)) {
573-
Finalize();
574-
return;
575-
}
576-
569+
auto error = sqlite3_errcode(dest_) == SQLITE_OK
570+
? CreateSQLiteError(env()->isolate(), backup_status_)
571+
: CreateSQLiteError(env()->isolate(), dest_);
577572
Finalize();
578-
resolver->Reject(env()->context(), e).ToChecked();
579-
}
580-
581-
void HandleBackupError(Local<Promise::Resolver> resolver, int errcode) {
582-
Local<Object> e;
583-
if (!CreateSQLiteError(env()->isolate(), errcode).ToLocal(&e)) {
584-
Finalize();
585-
return;
573+
if (error.ToLocal(&e)) {
574+
resolver->Reject(env()->context(), e).ToChecked();
586575
}
587-
588-
Finalize();
589-
resolver->Reject(env()->context(), e).ToChecked();
590576
}
591577

592578
Environment* env() const { return env_; }
@@ -781,7 +767,7 @@ bool DatabaseSync::Open() {
781767

782768
void DatabaseSync::FinalizeBackups() {
783769
for (auto backup : backups_) {
784-
backup->Cleanup();
770+
backup->Finalize();
785771
}
786772

787773
backups_.clear();

0 commit comments

Comments
 (0)