Retrieves a list of all currently active SQL logging sessions.
Returns detailed information for each active session including:
GraphQL context (requires Owner privileges)
Promise resolving to array of active SqlLoggingSession objects
ProtectedAfterProtectedAfterProtectedAfterProtectedapplyApplies an inbound RestoreContext___ blob to a server-side BaseEntity.
Mirrors the OldValues___ pattern — the client-side BaseEntity's
_restoreContext doesn't traverse the network, so the server must
reconstruct it from the mutation input before calling Save().
Returns true when context was applied; false when no context was on the input.
ProtectedArrayFilters encrypted fields for an array of data objects
Optionalprovider: IMetadataProviderProtectedArrayProtectedBeforeProtectedBeforeProtectedBeforeProtectedCheckChecks API key scope authorization. Only performs check if request was authenticated via API key (apiKeyHash present in userPayload). For OAuth/JWT auth, this is a no-op.
The scope path (e.g., 'entity:read', 'agent:execute')
The resource name (e.g., entity name, agent name)
The user payload from context
ProtectedCheckOptionalprovider: IMetadataProviderProtectedcreateProtectedCreateProtectedcreateDebug query to check what the current user email is in the SQL provider. This helps diagnose user filtering issues when SQL statements aren't being captured.
Returns a comparison of the user email stored in the SQLServerDataProvider versus the user email from the GraphQL context, which helps identify mismatches that could prevent SQL filtering from working correctly.
GraphQL context containing user information
Formatted string showing both email values and whether they match
ProtectedDeleteProtectedEmitProtectedFilterFilters encrypted field values before sending to the API client.
For each encrypted field in the entity:
Name of the entity
The data object containing field values
User context for encryption operations
Optionalprovider: IMetadataProviderThe filtered data object
ProtectedfindProtectedgetProtectedGetProtectedGetProtectedListenProtectedLoadLoads a single external-data-source-backed entity record by primary key and returns it in GraphQL field-name (CodeName) shape, or null if not found.
External entities (Entity.ExternalDataSourceID set) have no MJ base view or sproc — their
data is proxied live from a remote system — so the generated single-record resolver cannot run
SELECT * FROM <baseView>. Instead it loads through a BaseEntity object, whose InnerLoad
the data provider dispatches to the external read router's LoadExternalRecord (a composite-key
aware, quoted, parameter-bound single-record lookup), applying the same RLS gate and field
post-processing (decryption / datetime normalization) as the MJ-DB path. The caller is
responsible for the CheckUserReadPermissions gate beforehand.
ProtectedMapMaps field names to their GraphQL-safe CodeNames and handles encryption for API responses.
For encrypted fields coming from raw SQL queries (not entity objects):
The entity name
The data object with field values
OptionalcontextUser: UserInfoOptional user context for decryption (required for encrypted fields)
Optionalprovider: IMetadataProviderThe processed data object
ProtectedpackageProtectedPublishPublishes a CACHE_INVALIDATION event to connected browser clients after a successful entity save or delete. Includes the originSessionId so the originating browser can skip redundant re-fetches (it already handled the event locally).
Reads the contents of a specific SQL log file.
This method:
Unique identifier of the logging session
Maximum number of lines to read (optional, defaults to all)
GraphQL context (requires Owner privileges)
Promise resolving to the log file content
ProtectedReverseReverse-maps GraphQL-safe field names back to entity CodeNames in a mutation input object.
For example, _mj__integration_SyncStatus is mapped back to __mj_integration_SyncStatus.
Also reverse-maps keys inside the OldValues___ array if present.
This is the inverse of MapFieldNamesToCodeNames and must be called before passing
GraphQL input to entity SetMany() or field lookups.
ProtectedRunOptimized RunViewGenericInternal implementation with:
Optionalaggregates: AggregateExpression[]OptionalafterKey: CompositeKeyOptionalbypassCache: booleanProtectedRunOptimized implementation that:
ProtectedsafeRetrieves the current SQL logging configuration and status information.
Returns comprehensive configuration details including:
GraphQL context (requires Owner privileges)
Promise resolving to complete SQL logging configuration
Creates and starts a new SQL logging session with specified configuration.
This mutation:
Configuration for the new logging session
GraphQL context (requires Owner privileges)
Promise resolving to the created SqlLoggingSession object
Stops and disposes of all currently active SQL logging sessions.
This is a convenience method that:
GraphQL context (requires Owner privileges)
Promise resolving to true if all sessions were successfully stopped
Stops and disposes of a specific SQL logging session.
This mutation:
Unique identifier of the session to stop
GraphQL context (requires Owner privileges)
Promise resolving to true if session was successfully stopped
ProtectedTestThis routine compares the OldValues property in the input object to the values in the DB that we just loaded. If there are differences, we need to check to see if the client is trying to update any of those fields (e.g. overlap). If there is overlap, we throw an error. If there is no overlap, we can proceed with the update even if the DB Values and the ClientOldValues are not 100% the same, so long as there is no overlap in the specific FIELDS that are different.
ASSUMES: input object has an OldValues___ property that is an array of Key/Value pairs that represent the old values of the record that the client is trying to update.
ProtectedUpdateUpdates the default SQL logging options for new sessions.
Note: This updates runtime configuration only, not the static config file. Changes apply to new sessions but do not persist across server restarts. In a production system, consider persisting changes to a database.
New default options to apply (partial update supported)
GraphQL context (requires Owner privileges)
Promise resolving to the updated SqlLoggingOptions object
GraphQL resolver for SQL logging configuration and session management. Provides queries and mutations for controlling SQL logging functionality.
Security: All operations require Owner-level privileges.
Example