feat: transaction activity audit and account activity audit

This commit is contained in:
juancwu 2026-05-03 23:50:39 +00:00
commit c96595d41e
19 changed files with 1259 additions and 20 deletions

View file

@ -0,0 +1,18 @@
package model
import "time"
// AccountActivityRow is a unified row representing either an account-scoped space
// audit entry or a transaction audit entry that belongs to the account. Exactly one
// of SpaceLog / TxLog is set.
type AccountActivityRow struct {
SpaceLog *SpaceAuditLogWithActor
TxLog *TransactionAuditLogWithActor
}
func (r AccountActivityRow) Timestamp() time.Time {
if r.SpaceLog != nil {
return r.SpaceLog.CreatedAt
}
return r.TxLog.CreatedAt
}

View file

@ -11,6 +11,9 @@ const (
SpaceAuditActionMemberJoined SpaceAuditAction = "member.joined"
SpaceAuditActionMemberRemoved SpaceAuditAction = "member.removed"
SpaceAuditActionInviteCancelled SpaceAuditAction = "invite.cancelled"
SpaceAuditActionAccountCreated SpaceAuditAction = "account.created"
SpaceAuditActionAccountRenamed SpaceAuditAction = "account.renamed"
SpaceAuditActionAccountDeleted SpaceAuditAction = "account.deleted"
)
type SpaceAuditLog struct {

View file

@ -0,0 +1,26 @@
package model
import "time"
type TransactionAuditAction string
const (
TransactionAuditActionCreated TransactionAuditAction = "transaction.created"
TransactionAuditActionEdited TransactionAuditAction = "transaction.edited"
TransactionAuditActionDeleted TransactionAuditAction = "transaction.deleted"
)
type TransactionAuditLog struct {
ID string `db:"id"`
TransactionID string `db:"transaction_id"`
ActorID *string `db:"actor_id"`
Action TransactionAuditAction `db:"action"`
Metadata []byte `db:"metadata"`
CreatedAt time.Time `db:"created_at"`
}
type TransactionAuditLogWithActor struct {
TransactionAuditLog
ActorName *string `db:"actor_name"`
ActorEmail *string `db:"actor_email"`
}