@@ -23,8 +23,6 @@ package postgres
2323import (
2424 "context"
2525 "database/sql"
26- "fmt"
27- "time"
2826
2927 "github.com/uber/cadence/common/persistence/sql/sqlplugin"
3028)
@@ -35,13 +33,22 @@ const (
3533 operation_type, created_time, last_updated_time, identity, identity_type, comment
3634 ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)`
3735
38- _selectDomainAuditLogsQuery = `SELECT
36+ _listDomainAuditLogsQuery = `SELECT
3937 event_id, domain_id, state_before, state_before_encoding, state_after, state_after_encoding,
4038 operation_type, created_time, last_updated_time, identity, identity_type, comment
4139 FROM domain_audit_log
42- WHERE domain_id = $1 AND operation_type = $2 AND created_time >= $3 AND created_time < $4`
40+ WHERE domain_id = $1 AND operation_type = $2 AND created_time >= $3 AND created_time < $4
41+ AND (created_time < $5 OR (created_time = $5 AND event_id > $6))
42+ ORDER BY created_time DESC, event_id ASC
43+ LIMIT $7`
4344
44- _selectDomainAuditLogsOrderByQuery = ` ORDER BY created_time DESC, event_id ASC`
45+ _getDomainAuditLogsQuery = `SELECT
46+ event_id, domain_id, state_before, state_before_encoding, state_after, state_after_encoding,
47+ operation_type, created_time, last_updated_time, identity, identity_type, comment
48+ FROM domain_audit_log
49+ WHERE domain_id = $1 AND operation_type = $2 AND created_time >= $3 AND created_time < $4
50+ AND (created_time < $5 OR (created_time = $5 AND event_id > $6))
51+ ORDER BY created_time DESC, event_id ASC`
4552)
4653
4754// InsertIntoDomainAuditLog inserts a single row into domain_audit_log table
@@ -65,46 +72,37 @@ func (pdb *db) InsertIntoDomainAuditLog(ctx context.Context, row *sqlplugin.Doma
6572 )
6673}
6774
68- // SelectFromDomainAuditLogs returns audit log entries for a domain, operation type, and time range (optional)
75+ // SelectFromDomainAuditLogs returns audit log entries for a domain, operation type, and time range
6976func (pdb * db ) SelectFromDomainAuditLogs (
7077 ctx context.Context ,
7178 filter * sqlplugin.DomainAuditLogFilter ,
7279) ([]* sqlplugin.DomainAuditLogRow , error ) {
73-
74- start := time .Unix (0 , 0 )
75- end := time .Unix (0 , time .Now ().UnixNano ())
76-
77- if filter .MinCreatedTime != nil {
78- start = * filter .MinCreatedTime
79- }
80- if filter .MaxCreatedTime != nil {
81- end = * filter .MaxCreatedTime
80+ args := []interface {}{
81+ filter .DomainID ,
82+ filter .OperationType ,
83+ * filter .MinCreatedTime ,
84+ * filter .MaxCreatedTime ,
85+ * filter .PageMaxCreatedTime ,
86+ * filter .PageMinEventID ,
8287 }
8388
84- // Build base query with all required filters
85- query := _selectDomainAuditLogsQuery
86- args := []interface {}{filter .DomainID , filter .OperationType , start , end }
87- argIndex := 5
88-
89- // Handle pagination token
90- if filter .PageTokenMinCreatedTime != nil && filter .PageTokenMinEventID != nil {
91- query += fmt .Sprintf (` AND (created_time < $%d OR (created_time = $%d AND event_id > $%d))` ,
92- argIndex , argIndex , argIndex + 1 )
93- args = append (args , * filter .PageTokenMinCreatedTime , * filter .PageTokenMinEventID )
94- argIndex += 2
95- }
96-
97- query += _selectDomainAuditLogsOrderByQuery
98-
89+ var rows []* sqlplugin.DomainAuditLogRow
9990 if filter .PageSize > 0 {
100- query += fmt .Sprintf (` LIMIT $%d` , argIndex )
10191 args = append (args , filter .PageSize )
102- }
92+ err := pdb .driver .SelectContext (ctx , sqlplugin .DbDefaultShard , & rows , _listDomainAuditLogsQuery , args ... )
93+ if err != nil {
94+ return nil , err
95+ }
96+ } else {
97+ var row * sqlplugin.DomainAuditLogRow
98+ err := pdb .driver .GetContext (ctx , sqlplugin .DbDefaultShard , & row , _getDomainAuditLogsQuery , args ... )
99+ if err != nil {
100+ return nil , err
101+ }
102+ if row != nil {
103+ rows = append (rows , row )
104+ }
103105
104- var rows []* sqlplugin.DomainAuditLogRow
105- err := pdb .driver .SelectContext (ctx , sqlplugin .DbDefaultShard , & rows , query , args ... )
106- if err != nil {
107- return nil , err
108106 }
109107
110108 return rows , nil
0 commit comments