graph

package
v0.1.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2026 License: MIT Imports: 32 Imported by: 0

Documentation

Overview

Package graph implements the admin GraphQL API. The schema lives in schema.graphqls; generated.go and models_gen.go are generated by gqlgen.

Index

Constants

This section is empty.

Variables

Functions

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

Types

type Action

type Action string
const (
	ActionRead      Action = "READ"
	ActionCreate    Action = "CREATE"
	ActionUpdate    Action = "UPDATE"
	ActionDelete    Action = "DELETE"
	ActionExecute   Action = "EXECUTE"
	ActionAggregate Action = "AGGREGATE"
)

func (Action) IsValid

func (e Action) IsValid() bool

func (Action) MarshalGQL

func (e Action) MarshalGQL(w io.Writer)

func (Action) MarshalJSON

func (e Action) MarshalJSON() ([]byte, error)

func (Action) String

func (e Action) String() string

func (*Action) UnmarshalGQL

func (e *Action) UnmarshalGQL(v any) error

func (*Action) UnmarshalJSON

func (e *Action) UnmarshalJSON(b []byte) error

type ActionVisibility

type ActionVisibility struct {
	Action Action      `json:"action"`
	Result *Simulation `json:"result"`
}

type AdminAccount

type AdminAccount struct {
	Username    string    `json:"username"`
	Permissions []string  `json:"permissions"`
	Disabled    bool      `json:"disabled"`
	CreatedAt   time.Time `json:"createdAt"`
	UpdatedAt   time.Time `json:"updatedAt"`
}

type AdminAccountInput

type AdminAccountInput struct {
	Username    string   `json:"username"`
	Password    string   `json:"password"`
	Permissions []string `json:"permissions"`
}

type AdminAccountUpdate

type AdminAccountUpdate struct {
	Username    string   `json:"username"`
	Permissions []string `json:"permissions,omitempty"`
	Disabled    *bool    `json:"disabled,omitempty"`
}

type ColumnComment

type ColumnComment struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

type ComplexityRoot

type ComplexityRoot struct {
	ActionVisibility struct {
		Action func(childComplexity int) int
		Result func(childComplexity int) int
	}

	AdminAccount struct {
		CreatedAt   func(childComplexity int) int
		Disabled    func(childComplexity int) int
		Permissions func(childComplexity int) int
		UpdatedAt   func(childComplexity int) int
		Username    func(childComplexity int) int
	}

	ColumnComment struct {
		Description func(childComplexity int) int
		Name        func(childComplexity int) int
	}

	Configuration struct {
		Datasources func(childComplexity int) int
		Entities    func(childComplexity int) int
		Roles       func(childComplexity int) int
		Settings    func(childComplexity int) int
		Users       func(childComplexity int) int
	}

	Datasource struct {
		Connections    func(childComplexity int) int
		Driver         func(childComplexity int) int
		Dsn            func(childComplexity int) int
		Name           func(childComplexity int) int
		ReadAfterWrite func(childComplexity int) int
		Routing        func(childComplexity int) int
	}

	DatasourceConnection struct {
		Dsn    func(childComplexity int) int
		Name   func(childComplexity int) int
		Pooler func(childComplexity int) int
		Role   func(childComplexity int) int
	}

	DatasourceRouting struct {
		Execute func(childComplexity int) int
		Read    func(childComplexity int) int
		Write   func(childComplexity int) int
	}

	Entity struct {
		Affects       func(childComplexity int) int
		AllowCascade  func(childComplexity int) int
		Datasource    func(childComplexity int) int
		Description   func(childComplexity int) int
		Fields        func(childComplexity int) int
		Kind          func(childComplexity int) int
		LegacyAccess  func(childComplexity int) int
		Mcp           func(childComplexity int) int
		Name          func(childComplexity int) int
		Params        func(childComplexity int) int
		PrimaryKey    func(childComplexity int) int
		Relationships func(childComplexity int) int
		Schema        func(childComplexity int) int
		Source        func(childComplexity int) int
		TenantPolicy  func(childComplexity int) int
		UniqueKeys    func(childComplexity int) int
	}

	EntityCapability struct {
		Action     func(childComplexity int) int
		Columns    func(childComplexity int) int
		Connection func(childComplexity int) int
		Entity     func(childComplexity int) int
		Privilege  func(childComplexity int) int
		Reason     func(childComplexity int) int
	}

	EntityMCP struct {
		CustomTool       func(childComplexity int) int
		DmlTools         func(childComplexity int) int
		TrustedProcedure func(childComplexity int) int
	}

	EntityVisibility struct {
		Actions func(childComplexity int) int
		Entity  func(childComplexity int) int
	}

	Field struct {
		Alias       func(childComplexity int) int
		Description func(childComplexity int) int
		Exclude     func(childComplexity int) int
		Mask        func(childComplexity int) int
		Name        func(childComplexity int) int
	}

	Grant struct {
		Actions          func(childComplexity int) int
		Entity           func(childComplexity int) int
		FieldsRestricted func(childComplexity int) int
		ReadFields       func(childComplexity int) int
		Rows             func(childComplexity int) int
		WriteFields      func(childComplexity int) int
	}

	ImportColumn struct {
		Description func(childComplexity int) int
		Name        func(childComplexity int) int
		Nullable    func(childComplexity int) int
		PrimaryKey  func(childComplexity int) int
		Type        func(childComplexity int) int
	}

	ImportForeignKey struct {
		Columns    func(childComplexity int) int
		Name       func(childComplexity int) int
		OnDelete   func(childComplexity int) int
		OnUpdate   func(childComplexity int) int
		RefColumns func(childComplexity int) int
		RefSchema  func(childComplexity int) int
		RefTable   func(childComplexity int) int
	}

	ImportKey struct {
		Columns func(childComplexity int) int
		Name    func(childComplexity int) int
		Primary func(childComplexity int) int
		Reason  func(childComplexity int) int
	}

	ImportTable struct {
		Candidate    func(childComplexity int) int
		Columns      func(childComplexity int) int
		ConfiguredAs func(childComplexity int) int
		Description  func(childComplexity int) int
		ForeignKeys  func(childComplexity int) int
		Keys         func(childComplexity int) int
		Schema       func(childComplexity int) int
		SideEffects  func(childComplexity int) int
		Status       func(childComplexity int) int
		Table        func(childComplexity int) int
	}

	Mutation struct {
		CreateAdminAccount func(childComplexity int, input AdminAccountInput) int
		CreateDraft        func(childComplexity int, draft DraftInput, comment *string) int
		GenerateUserToken  func(childComplexity int) int
		Publish            func(childComplexity int, input PublishInput) int
		Rollback           func(childComplexity int, input RollbackInput) int
		SetAdminPassword   func(childComplexity int, input SetAdminPasswordInput) int
		UpdateAdminAccount func(childComplexity int, input AdminAccountUpdate) int
	}

	PendingRevision struct {
		Error           func(childComplexity int) int
		ID              func(childComplexity int) int
		RestartRequired func(childComplexity int) int
	}

	Query struct {
		AdminAccounts func(childComplexity int) int
		Capabilities  func(childComplexity int) int
		ConfigSchema  func(childComplexity int) int
		Diff          func(childComplexity int, from string, to *string, draft *DraftInput) int
		Me            func(childComplexity int) int
		Published     func(childComplexity int) int
		Revision      func(childComplexity int, id string) int
		Revisions     func(childComplexity int, limit *int) int
		SchemaImport  func(childComplexity int, datasource string, schemas []string) int
		ServerStatus  func(childComplexity int) int
		Simulate      func(childComplexity int, input SimulationInput) int
		TableComments func(childComplexity int, tables []TableRef) int
		Validate      func(childComplexity int, draft DraftInput) int
		Visibility    func(childComplexity int, input VisibilityInput) int
	}

	Relationship struct {
		Cardinality func(childComplexity int) int
		JoinOn      func(childComplexity int) int
		Name        func(childComplexity int) int
		Target      func(childComplexity int) int
	}

	Revision struct {
		Author      func(childComplexity int) int
		Comment     func(childComplexity int) int
		Config      func(childComplexity int) int
		ContentHash func(childComplexity int) int
		CreatedAt   func(childComplexity int) int
		ID          func(childComplexity int) int
		Parent      func(childComplexity int) int
		PublishedAt func(childComplexity int) int
		State       func(childComplexity int) int
		Yaml        func(childComplexity int) int
	}

	Role struct {
		Description func(childComplexity int) int
		Grants      func(childComplexity int) int
		Members     func(childComplexity int) int
		Name        func(childComplexity int) int
	}

	SchemaImport struct {
		Datasource    func(childComplexity int) int
		DefaultSchema func(childComplexity int) int
		Tables        func(childComplexity int) int
	}

	ServerStatus struct {
		AppliedRevision func(childComplexity int) int
		Pending         func(childComplexity int) int
		Watching        func(childComplexity int) int
	}

	Simulation struct {
		Allowed     func(childComplexity int) int
		FieldScopes func(childComplexity int) int
		Fields      func(childComplexity int) int
		Grants      func(childComplexity int) int
		Reason      func(childComplexity int) int
		RowFilter   func(childComplexity int) int
	}

	TableComments struct {
		Columns     func(childComplexity int) int
		Description func(childComplexity int) int
	}

	User struct {
		Description func(childComplexity int) int
		Disabled    func(childComplexity int) int
		Grants      func(childComplexity int) int
		HasToken    func(childComplexity int) int
		Name        func(childComplexity int) int
		Roles       func(childComplexity int) int
		Subject     func(childComplexity int) int
	}

	UserToken struct {
		Token     func(childComplexity int) int
		TokenHash func(childComplexity int) int
	}

	Validation struct {
		ContentHash     func(childComplexity int) int
		Error           func(childComplexity int) int
		Ok              func(childComplexity int) int
		RestartRequired func(childComplexity int) int
		Warnings        func(childComplexity int) int
	}
}

type Configuration

type Configuration struct {
	Datasources []Datasource `json:"datasources"`
	Entities    []Entity     `json:"entities"`
	Roles       []Role       `json:"roles"`
	Users       []User       `json:"users"`
	// Every other top-level section (server, tools, cost, budget, cache, ...) as YAML-shaped JSON.
	Settings any `json:"settings"`
}

type Datasource

type Datasource struct {
	Name   string `json:"name"`
	Driver string `json:"driver"`
	// The read connection's DSN with passwords redacted.
	Dsn         string                 `json:"dsn"`
	Connections []DatasourceConnection `json:"connections"`
	// The connection reads, writes and procedure calls use.
	Routing *DatasourceRouting `json:"routing"`
	// How long a session reads from the write connection after writing (a Go duration); empty when off.
	ReadAfterWrite *string `json:"readAfterWrite,omitempty"`
}

type DatasourceConnection

type DatasourceConnection struct {
	Name string `json:"name"`
	// The DSN with passwords redacted.
	Dsn string `json:"dsn"`
	// primary or replica.
	Role string `json:"role"`
	// transaction behind a transaction-mode pooler; null otherwise.
	Pooler *string `json:"pooler,omitempty"`
}

type DatasourceRouting

type DatasourceRouting struct {
	Read    string `json:"read"`
	Write   string `json:"write"`
	Execute string `json:"execute"`
}

type DirectiveRoot

type DirectiveRoot struct {
}

type DraftInput

type DraftInput struct {
	Base string `json:"base"`
	// Replaces the entities section when provided.
	Entities []EntityInput `json:"entities,omitempty"`
	// Replaces the roles section when provided.
	Roles []RoleInput `json:"roles,omitempty"`
	// Replaces the users section when provided; a missing tokenHash keeps the base user's hash.
	Users []UserInput `json:"users,omitempty"`
	// Replaces the given top-level sections; datasources, entities, roles and users are not allowed here.
	Settings any `json:"settings,omitempty"`
}

type Entity

type Entity struct {
	Name string `json:"name"`
	// The table, view or procedure; null means the entity name.
	Source *string `json:"source,omitempty"`
	// null means the datasource named default.
	Datasource *string `json:"datasource,omitempty"`
	Schema     *string `json:"schema,omitempty"`
	// table, view or procedure; null means table.
	Kind        *string  `json:"kind,omitempty"`
	Description *string  `json:"description,omitempty"`
	PrimaryKey  []string `json:"primaryKey"`
	// Unique keys, each a field list, that identify one row like the primary key.
	UniqueKeys    [][]string     `json:"uniqueKeys"`
	Fields        []Field        `json:"fields"`
	Relationships []Relationship `json:"relationships"`
	TenantPolicy  any            `json:"tenantPolicy,omitempty"`
	// Entity-level roles, fieldACL and rowPolicies, kept for compatibility.
	LegacyAccess any        `json:"legacyAccess,omitempty"`
	Mcp          *EntityMcp `json:"mcp"`
	Params       []string   `json:"params"`
	// Entities a procedure writes; empty invalidates its datasource's cached reads.
	Affects []string `json:"affects"`
	// Admit deletes and key updates that foreign keys cascade to other tables without checking permissions there.
	AllowCascade bool `json:"allowCascade"`
}

type EntityCapability

type EntityCapability struct {
	Entity    string    `json:"entity"`
	Action    Action    `json:"action"`
	Privilege Privilege `json:"privilege"`
	// The connection the action routes to.
	Connection string `json:"connection"`
	// Columns granted at column level when the table-level privilege is not.
	Columns []string `json:"columns,omitempty"`
	Reason  *string  `json:"reason,omitempty"`
}

type EntityInput

type EntityInput struct {
	Name          string              `json:"name"`
	Source        *string             `json:"source,omitempty"`
	Datasource    *string             `json:"datasource,omitempty"`
	Schema        *string             `json:"schema,omitempty"`
	Kind          *string             `json:"kind,omitempty"`
	Description   *string             `json:"description,omitempty"`
	PrimaryKey    []string            `json:"primaryKey,omitempty"`
	UniqueKeys    [][]string          `json:"uniqueKeys,omitempty"`
	Fields        []FieldInput        `json:"fields,omitempty"`
	Relationships []RelationshipInput `json:"relationships,omitempty"`
	TenantPolicy  any                 `json:"tenantPolicy,omitempty"`
	LegacyAccess  any                 `json:"legacyAccess,omitempty"`
	Mcp           *EntityMCPInput     `json:"mcp,omitempty"`
	Params        []string            `json:"params,omitempty"`
	Affects       []string            `json:"affects,omitempty"`
	AllowCascade  *bool               `json:"allowCascade,omitempty"`
}

type EntityMCPInput

type EntityMCPInput struct {
	DmlTools         *bool `json:"dmlTools,omitempty"`
	CustomTool       *bool `json:"customTool,omitempty"`
	TrustedProcedure *bool `json:"trustedProcedure,omitempty"`
}

type EntityMcp

type EntityMcp struct {
	DmlTools         bool `json:"dmlTools"`
	CustomTool       bool `json:"customTool"`
	TrustedProcedure bool `json:"trustedProcedure"`
}

type EntityVisibility

type EntityVisibility struct {
	Entity string `json:"entity"`
	// One result per action that applies to the entity kind.
	Actions []ActionVisibility `json:"actions"`
}

type Field

type Field struct {
	Name        string  `json:"name"`
	Alias       *string `json:"alias,omitempty"`
	Description *string `json:"description,omitempty"`
	Mask        *string `json:"mask,omitempty"`
	Exclude     bool    `json:"exclude"`
}

type FieldInput

type FieldInput struct {
	Name        string  `json:"name"`
	Alias       *string `json:"alias,omitempty"`
	Description *string `json:"description,omitempty"`
	Mask        *string `json:"mask,omitempty"`
	Exclude     *bool   `json:"exclude,omitempty"`
}

type Grant

type Grant struct {
	Entity  string   `json:"entity"`
	Actions []Action `json:"actions"`
	// False grants every visible field; true limits to readFields/writeFields.
	FieldsRestricted bool     `json:"fieldsRestricted"`
	ReadFields       []string `json:"readFields"`
	WriteFields      []string `json:"writeFields"`
	Rows             any      `json:"rows,omitempty"`
}

type GrantInput

type GrantInput struct {
	Entity           string   `json:"entity"`
	Actions          []Action `json:"actions"`
	FieldsRestricted *bool    `json:"fieldsRestricted,omitempty"`
	ReadFields       []string `json:"readFields,omitempty"`
	WriteFields      []string `json:"writeFields,omitempty"`
	Rows             any      `json:"rows,omitempty"`
}

type ImportColumn

type ImportColumn struct {
	Name        string `json:"name"`
	Type        string `json:"type"`
	Nullable    bool   `json:"nullable"`
	Description string `json:"description"`
	PrimaryKey  bool   `json:"primaryKey"`
}

type ImportForeignKey

type ImportForeignKey struct {
	Name       string   `json:"name"`
	Columns    []string `json:"columns"`
	RefSchema  string   `json:"refSchema"`
	RefTable   string   `json:"refTable"`
	RefColumns []string `json:"refColumns"`
	// Referential action that writes referencing rows (cascade, set_null, set_default); null when it only checks.
	OnDelete *string `json:"onDelete,omitempty"`
	OnUpdate *string `json:"onUpdate,omitempty"`
}

type ImportKey

type ImportKey struct {
	Name    string   `json:"name"`
	Columns []string `json:"columns"`
	Primary bool     `json:"primary"`
	// Why the key cannot identify a row (partial, expression, prefix, nullable); null when it can.
	Reason *string `json:"reason,omitempty"`
}

type ImportStatus

type ImportStatus string
const (
	// No configured entity reads this table.
	ImportStatusNew ImportStatus = "NEW"
	// An entity of the same datasource already reads this table.
	ImportStatusConfigured ImportStatus = "CONFIGURED"
)

func (ImportStatus) IsValid

func (e ImportStatus) IsValid() bool

func (ImportStatus) MarshalGQL

func (e ImportStatus) MarshalGQL(w io.Writer)

func (ImportStatus) MarshalJSON

func (e ImportStatus) MarshalJSON() ([]byte, error)

func (ImportStatus) String

func (e ImportStatus) String() string

func (*ImportStatus) UnmarshalGQL

func (e *ImportStatus) UnmarshalGQL(v any) error

func (*ImportStatus) UnmarshalJSON

func (e *ImportStatus) UnmarshalJSON(b []byte) error

type ImportTable

type ImportTable struct {
	Schema      string       `json:"schema"`
	Table       string       `json:"table"`
	Description string       `json:"description"`
	Status      ImportStatus `json:"status"`
	// The configured entity name when status is CONFIGURED.
	ConfiguredAs *string        `json:"configuredAs,omitempty"`
	Columns      []ImportColumn `json:"columns"`
	// The primary key and unique keys, including those that cannot identify a row.
	Keys        []ImportKey        `json:"keys"`
	ForeignKeys []ImportForeignKey `json:"foreignKeys"`
	// Triggers or rules: a write may change other tables.
	SideEffects bool `json:"sideEffects"`
	// A zero-permission entity proposal; add it to a draft to configure it.
	Candidate *Entity `json:"candidate"`
}

type Introspection

type Introspection func(ctx context.Context, datasource string, fn func(introspect.Introspector) error) error

Introspection runs fn with the introspector of a connected datasource.

type Mutation

type Mutation struct {
}

type MutationResolver

type MutationResolver interface {
	CreateDraft(ctx context.Context, draft DraftInput, comment *string) (*Revision, error)
	Publish(ctx context.Context, input PublishInput) (*Revision, error)
	Rollback(ctx context.Context, input RollbackInput) (*Revision, error)
	GenerateUserToken(ctx context.Context) (*UserToken, error)
	CreateAdminAccount(ctx context.Context, input AdminAccountInput) (*AdminAccount, error)
	UpdateAdminAccount(ctx context.Context, input AdminAccountUpdate) (*AdminAccount, error)
	SetAdminPassword(ctx context.Context, input SetAdminPasswordInput) (*AdminAccount, error)
}

type PendingRevision

type PendingRevision struct {
	ID string `json:"id"`
	// True when only a restart applies it; otherwise building it failed.
	RestartRequired bool   `json:"restartRequired"`
	Error           string `json:"error"`
}

type Privilege

type Privilege string
const (
	PrivilegeGranted Privilege = "GRANTED"
	PrivilegeDenied  Privilege = "DENIED"
	PrivilegeUnknown Privilege = "UNKNOWN"
)

func (Privilege) IsValid

func (e Privilege) IsValid() bool

func (Privilege) MarshalGQL

func (e Privilege) MarshalGQL(w io.Writer)

func (Privilege) MarshalJSON

func (e Privilege) MarshalJSON() ([]byte, error)

func (Privilege) String

func (e Privilege) String() string

func (*Privilege) UnmarshalGQL

func (e *Privilege) UnmarshalGQL(v any) error

func (*Privilege) UnmarshalJSON

func (e *Privilege) UnmarshalJSON(b []byte) error

type PublishInput

type PublishInput struct {
	// The draft to publish.
	ID              string `json:"id"`
	RestartRequired *bool  `json:"restartRequired,omitempty"`
	// The published revision the caller based its work on; when another revision
	// was published since, publish fails with extensions.code CONFLICT.
	ExpectedPublished *string `json:"expectedPublished,omitempty"`
}

type Query

type Query struct {
}

type QueryResolver

type QueryResolver interface {
	Me(ctx context.Context) (*AdminAccount, error)
	ServerStatus(ctx context.Context) (*ServerStatus, error)
	ConfigSchema(ctx context.Context) (any, error)
	Published(ctx context.Context) (*Revision, error)
	Revision(ctx context.Context, id string) (*Revision, error)
	Revisions(ctx context.Context, limit *int) ([]Revision, error)
	SchemaImport(ctx context.Context, datasource string, schemas []string) (*SchemaImport, error)
	TableComments(ctx context.Context, tables []TableRef) ([]*TableComments, error)
	Validate(ctx context.Context, draft DraftInput) (*Validation, error)
	Capabilities(ctx context.Context) ([]EntityCapability, error)
	Diff(ctx context.Context, from string, to *string, draft *DraftInput) (string, error)
	Simulate(ctx context.Context, input SimulationInput) (*Simulation, error)
	Visibility(ctx context.Context, input VisibilityInput) ([]EntityVisibility, error)
	AdminAccounts(ctx context.Context) ([]AdminAccount, error)
}

type Relationship

type Relationship struct {
	Name        string `json:"name"`
	Target      string `json:"target"`
	Cardinality string `json:"cardinality"`
	JoinOn      any    `json:"joinOn"`
}

type RelationshipInput

type RelationshipInput struct {
	Name        string `json:"name"`
	Target      string `json:"target"`
	Cardinality string `json:"cardinality"`
	JoinOn      any    `json:"joinOn"`
}

type Resolver

type Resolver struct {
	Store      revision.Store
	Accounts   accounts.Service
	Introspect Introspection
	// Status reports the serving process; nil reports nothing applied.
	Status func() RuntimeState
	// Capabilities reports the serving snapshot's capabilities; nil reports
	// none.
	Capabilities func() bootstrap.EntityCapabilities
}

Resolver is the root resolver. It holds no per-request state.

func (*Resolver) Mutation

func (r *Resolver) Mutation() MutationResolver

Mutation returns MutationResolver implementation.

func (*Resolver) Query

func (r *Resolver) Query() QueryResolver

Query returns QueryResolver implementation.

func (*Resolver) Revision

func (r *Resolver) Revision() RevisionResolver

Revision returns RevisionResolver implementation.

type ResolverRoot

type ResolverRoot interface {
	Mutation() MutationResolver
	Query() QueryResolver
	Revision() RevisionResolver
}

type Revision

type Revision struct {
	ID          string
	Parent      *string
	State       RevisionState
	ContentHash string
	Author      string
	Comment     string
	CreatedAt   time.Time
	PublishedAt *time.Time
	// contains filtered or unexported fields
}

Revision is the GraphQL Revision. The payload stays private: config and yaml are resolved from it only when a query selects them.

type RevisionResolver

type RevisionResolver interface {
	Config(ctx context.Context, obj *Revision) (*Configuration, error)
	Yaml(ctx context.Context, obj *Revision) (string, error)
}

type RevisionState

type RevisionState string
const (
	RevisionStateDraft      RevisionState = "DRAFT"
	RevisionStatePublished  RevisionState = "PUBLISHED"
	RevisionStateSuperseded RevisionState = "SUPERSEDED"
	RevisionStateRolledBack RevisionState = "ROLLED_BACK"
)

func (RevisionState) IsValid

func (e RevisionState) IsValid() bool

func (RevisionState) MarshalGQL

func (e RevisionState) MarshalGQL(w io.Writer)

func (RevisionState) MarshalJSON

func (e RevisionState) MarshalJSON() ([]byte, error)

func (RevisionState) String

func (e RevisionState) String() string

func (*RevisionState) UnmarshalGQL

func (e *RevisionState) UnmarshalGQL(v any) error

func (*RevisionState) UnmarshalJSON

func (e *RevisionState) UnmarshalJSON(b []byte) error

type Role

type Role struct {
	Name        string  `json:"name"`
	Description *string `json:"description,omitempty"`
	Grants      []Grant `json:"grants"`
	// Users that have this role.
	Members []string `json:"members"`
}

type RoleInput

type RoleInput struct {
	Name        string       `json:"name"`
	Description *string      `json:"description,omitempty"`
	Grants      []GrantInput `json:"grants,omitempty"`
}

type RollbackInput

type RollbackInput struct {
	// Revision to restore; default: the newest earlier published content.
	To              *string `json:"to,omitempty"`
	RestartRequired *bool   `json:"restartRequired,omitempty"`
	Comment         *string `json:"comment,omitempty"`
}

type RuntimeState

type RuntimeState struct {
	// Applied is the store revision being served; 0 when unknown.
	Applied  int64
	Watching bool
	// Pending is a published revision not applied; nil when none.
	Pending *bootstrap.StaleState
}

RuntimeState is what the serving process reports about itself.

type SchemaImport

type SchemaImport struct {
	Datasource string `json:"datasource"`
	// The schema where entities without a schema read (unqualified names
	// resolve); null when the database cannot report it.
	DefaultSchema *string       `json:"defaultSchema,omitempty"`
	Tables        []ImportTable `json:"tables"`
}

type ServerStatus

type ServerStatus struct {
	// Revision this process serves; null when it does not track the store.
	AppliedRevision *string `json:"appliedRevision,omitempty"`
	// Whether the process applies newly published revisions (--watch).
	Watching bool `json:"watching"`
	// A published revision this process has not applied.
	Pending *PendingRevision `json:"pending,omitempty"`
}

type SetAdminPasswordInput

type SetAdminPasswordInput struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

type Simulation

type Simulation struct {
	Allowed bool     `json:"allowed"`
	Reason  string   `json:"reason"`
	Fields  []string `json:"fields"`
	// Effective row filter in rowPolicies JSON form; null means every row.
	RowFilter any      `json:"rowFilter,omitempty"`
	Grants    []string `json:"grants"`
	// Set when no single grant covers the requested fields.
	FieldScopes [][]string `json:"fieldScopes,omitempty"`
}

type SimulationInput

type SimulationInput struct {
	// Simulate against this unsaved draft...
	Draft *DraftInput `json:"draft,omitempty"`
	// ...or this revision; default: the published revision.
	Revision *string `json:"revision,omitempty"`
	// A configured user name, or role:<name> to evaluate a role.
	User   string `json:"user"`
	Entity string `json:"entity"`
	Action Action `json:"action"`
	// Requested fields; empty means the default projection.
	Fields []string `json:"fields,omitempty"`
	// Extra subject attributes; configured user attributes win.
	Subject any `json:"subject,omitempty"`
}

type TableComments

type TableComments struct {
	Description string          `json:"description"`
	Columns     []ColumnComment `json:"columns"`
}

type TableRef

type TableRef struct {
	Datasource string  `json:"datasource"`
	Schema     *string `json:"schema,omitempty"`
	// Physical table name (entity source).
	Table string `json:"table"`
}

type User

type User struct {
	Name        string   `json:"name"`
	Description *string  `json:"description,omitempty"`
	Roles       []string `json:"roles"`
	Grants      []Grant  `json:"grants"`
	Subject     any      `json:"subject,omitempty"`
	Disabled    bool     `json:"disabled"`
	HasToken    bool     `json:"hasToken"`
}

type UserInput

type UserInput struct {
	Name        string       `json:"name"`
	Description *string      `json:"description,omitempty"`
	Roles       []string     `json:"roles,omitempty"`
	Grants      []GrantInput `json:"grants,omitempty"`
	Subject     any          `json:"subject,omitempty"`
	Disabled    *bool        `json:"disabled,omitempty"`
	TokenHash   *string      `json:"tokenHash,omitempty"`
}

type UserToken

type UserToken struct {
	Token     string `json:"token"`
	TokenHash string `json:"tokenHash"`
}

type Validation

type Validation struct {
	Ok          bool    `json:"ok"`
	Error       *string `json:"error,omitempty"`
	ContentHash *string `json:"contentHash,omitempty"`
	// Changes against the published revision that need a restart.
	RestartRequired []string `json:"restartRequired"`
	// Grants the routed datasource connections cannot run (they do not block publishing).
	Warnings []string `json:"warnings"`
}

type VisibilityInput

type VisibilityInput struct {
	Draft    *DraftInput `json:"draft,omitempty"`
	Revision *string     `json:"revision,omitempty"`
	// A configured user name, or role:<name> to evaluate a role.
	User    string `json:"user"`
	Subject any    `json:"subject,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL