7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/rails_audit_log/graphql/queries/audit_log_entries_query_mixin.rb', line 7
def self.included(base)
base.field(
:audit_log_entry,
RailsAuditLog::Graphql::Types::AuditLogEntryType,
null: true,
description: "Fetch a single audit log entry by ID. Returns nil if not found.",
resolver_method: :resolve_audit_log_entry
) do
argument :id, GraphQL::Types::ID, required: true,
description: "ID of the audit log entry."
end
base.field(
:audit_log_entries,
[RailsAuditLog::Graphql::Types::AuditLogEntryType, null: false],
null: false,
description: "List audit log entries with optional filters. Offset-paginated.",
resolver_method: :resolve_audit_log_entries
) do
argument :event, String, required: false, description: "Filter by event type (create, update, destroy)."
argument :item_type, String, required: false, description: "Filter by audited model class name."
argument :item_id, GraphQL::Types::ID, required: false, description: "Filter by audited record ID."
argument :actor_id, GraphQL::Types::ID, required: false, description: "Filter by actor ID."
argument :since, GraphQL::Types::ISO8601DateTime, required: false, description: "Return entries created at or after this time."
argument :until, GraphQL::Types::ISO8601DateTime, required: false, as: :until_time, description: "Return entries created at or before this time."
argument :touching, String, required: false, description: "Filter to entries that changed a specific attribute (matches object_changes keys)."
argument :order_by, RailsAuditLog::Graphql::InputObjects::AuditLogEntrySortInput, required: false, description: "Sort order. Defaults to CREATED_AT DESC."
argument :page, GraphQL::Types::Int, required: false, default_value: 1, description: "Page number (1-based)."
argument :per_page, GraphQL::Types::Int, required: false, default_value: 25, description: "Number of results per page."
end
base.field(
:audit_log_entries_connection,
RailsAuditLog::Graphql::Types::AuditLogEntryType.connection_type,
null: false,
description: "List audit log entries with optional filters. Cursor-paginated (Relay connection).",
resolver_method: :resolve_audit_log_entries_connection
) do
argument :event, String, required: false, description: "Filter by event type (create, update, destroy)."
argument :item_type, String, required: false, description: "Filter by audited model class name."
argument :item_id, GraphQL::Types::ID, required: false, description: "Filter by audited record ID."
argument :actor_id, GraphQL::Types::ID, required: false, description: "Filter by actor ID."
argument :since, GraphQL::Types::ISO8601DateTime, required: false, description: "Return entries created at or after this time."
argument :until, GraphQL::Types::ISO8601DateTime, required: false, as: :until_time, description: "Return entries created at or before this time."
argument :touching, String, required: false, description: "Filter to entries that changed a specific attribute (matches object_changes keys)."
argument :order_by, RailsAuditLog::Graphql::InputObjects::AuditLogEntrySortInput, required: false, description: "Sort order. Defaults to CREATED_AT DESC."
end
end
|