Skip to content

Commit 14a653e

Browse files
committed
universe+tapdb: add SQL statement to delete proof sync log entries
1 parent 14644ff commit 14a653e

File tree

5 files changed

+102
-1
lines changed

5 files changed

+102
-1
lines changed

tapdb/sqlc/querier.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tapdb/sqlc/queries/universe.sql

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,4 +460,24 @@ WHERE (log.sync_direction = sqlc.narg('sync_direction')
460460
OR sqlc.narg('leaf_minting_point_bytes') IS NULL)
461461
AND
462462
(leaf.script_key_bytes = sqlc.narg('leaf_script_key_bytes')
463-
OR sqlc.narg('leaf_script_key_bytes') IS NULL);
463+
OR sqlc.narg('leaf_script_key_bytes') IS NULL);
464+
465+
-- name: DeleteFederationProofSyncLog :exec
466+
WITH selected_server_id AS (
467+
-- Select the server ids from the universe_servers table for the specified
468+
-- hosts.
469+
SELECT id
470+
FROM universe_servers
471+
WHERE
472+
(server_host = sqlc.narg('server_host')
473+
OR sqlc.narg('server_host') IS NULL)
474+
)
475+
DELETE FROM federation_proof_sync_log
476+
WHERE
477+
servers_id IN (SELECT id FROM selected_server_id) AND
478+
(status = sqlc.narg('status')
479+
OR sqlc.narg('status') IS NULL) AND
480+
(timestamp >= sqlc.narg('min_timestamp')
481+
OR sqlc.narg('min_timestamp') IS NULL) AND
482+
(attempt_counter >= sqlc.narg('min_attempt_counter')
483+
OR sqlc.narg('min_attempt_counter') IS NULL);

tapdb/sqlc/universe.sql.go

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tapdb/universe_federation.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ type (
3232
// logs.
3333
QueryFedProofSyncLogParams = sqlc.QueryFederationProofSyncLogParams
3434

35+
// DeleteFedProofSyncLogParams is used to delete proof sync log entries.
36+
DeleteFedProofSyncLogParams = sqlc.DeleteFederationProofSyncLogParams
37+
3538
// ProofSyncLogEntry is a single entry from the proof sync log.
3639
ProofSyncLogEntry = sqlc.QueryFederationProofSyncLogRow
3740

@@ -92,6 +95,10 @@ type FederationProofSyncLogStore interface {
9295
// given proof leaf.
9396
QueryFederationProofSyncLog(ctx context.Context,
9497
arg QueryFedProofSyncLogParams) ([]ProofSyncLogEntry, error)
98+
99+
// DeleteFederationProofSyncLog deletes proof sync log entries.
100+
DeleteFederationProofSyncLog(ctx context.Context,
101+
arg DeleteFedProofSyncLogParams) error
95102
}
96103

97104
// FederationSyncConfigStore is used to manage the set of Universe servers as
@@ -565,6 +572,37 @@ func fetchProofSyncLogEntry(ctx context.Context, entry ProofSyncLogEntry,
565572
}, nil
566573
}
567574

575+
// DeleteProofsSyncLogEntries deletes a set of proof sync log entries.
576+
func (u *UniverseFederationDB) DeleteProofsSyncLogEntries(ctx context.Context,
577+
servers ...universe.ServerAddr) error {
578+
579+
var writeTx UniverseFederationOptions
580+
581+
err := u.db.ExecTx(ctx, &writeTx, func(db UniverseServerStore) error {
582+
// Delete proof sync log entries which are associated with each
583+
// server.
584+
for i := range servers {
585+
server := servers[i]
586+
587+
err := db.DeleteFederationProofSyncLog(
588+
ctx, DeleteFedProofSyncLogParams{
589+
ServerHost: sqlStr(server.HostStr()),
590+
},
591+
)
592+
if err != nil {
593+
return err
594+
}
595+
}
596+
597+
return nil
598+
})
599+
if err != nil {
600+
return err
601+
}
602+
603+
return nil
604+
}
605+
568606
// UpsertFederationSyncConfig upserts both the global and universe specific
569607
// federation sync configs.
570608
func (u *UniverseFederationDB) UpsertFederationSyncConfig(

universe/interface.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,10 @@ type FederationProofSyncLog interface {
859859
// returns all log entries with sync status pending.
860860
FetchPendingProofsSyncLog(ctx context.Context,
861861
syncDirection *SyncDirection) ([]*ProofSyncLogEntry, error)
862+
863+
// DeleteProofsSyncLogEntries deletes proof sync log entries.
864+
DeleteProofsSyncLogEntries(ctx context.Context,
865+
servers ...ServerAddr) error
862866
}
863867

864868
// FederationDB is used for CRUD operations related to federation logs and

0 commit comments

Comments
 (0)