schema

package
v0.2.0-alpha.11 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2024 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompareSchemas added in v0.0.38

func CompareSchemas(s1, s2 *Schema) (change.ChangeMap, error)

CompareSchemas takes 2 schemas and returns a list of changes in the schema not an exhaustive list, exists (for now) only to speed up file generation and so only checks for artifacts that will affect file generation over time, we'll update this to check more properties and be used in more places

Types

type CanViewerSeeInfo added in v0.1.0

type CanViewerSeeInfo struct {
	Name   string
	Fields []*field.Field
}

type ConstGroupInfo

type ConstGroupInfo struct {
	ConstType string
	Constants map[string]*ConstInfo
}

func (*ConstGroupInfo) CreateNewType

func (cg *ConstGroupInfo) CreateNewType() bool

func (*ConstGroupInfo) GetSortedConstants

func (cg *ConstGroupInfo) GetSortedConstants() []*ConstInfo

type ConstInfo

type ConstInfo struct {
	ConstName  string
	ConstValue string
	Comment    string
}

type Container

type Container interface {
	GetEdgeInfo() *edge.EdgeInfo
	GetFieldInfo() *field.FieldInfo
	GetActionInfo() *action.ActionInfo
	GetName() string
	IsPattern() bool
}

type EnumInfo

type EnumInfo struct {
	Enum     *enum.Enum
	GQLEnum  *enum.GQLEnum
	NodeData *NodeData
	// InputNode needed to generate columns etc for db columns
	// Presence of this indicates should be in its own file
	// e.g. lookup table enums
	// we only use this as a flag
	InputNode *input.Node
	Pattern   *input.Pattern
}

func (*EnumInfo) LookupTableEnum

func (info *EnumInfo) LookupTableEnum() bool

type NodeData

type NodeData struct {
	nodeinfo.NodeInfo

	PackageName     string
	FieldInfo       *field.FieldInfo
	EdgeInfo        *edge.EdgeInfo
	TableName       string
	ActionInfo      *action.ActionInfo
	HideFromGraphQL bool
	EnumTable       bool
	DBRows          []map[string]interface{}

	// fine to just reuse input constraints for now
	Constraints []*input.Constraint
	// same as above. fine to just reuse
	Indices                 []*input.Index
	PatternsWithMixins      []string
	CustomGraphQLInterfaces []string
	SupportUpsert           bool
	ShowCanViewerSee        bool
	ShowCanViewerEdit       bool

	TransformsSelect        bool
	TransformsDelete        bool
	TransformsLoaderCodegen *input.TransformsLoaderCodegen

	HasDefaultActionPrivacy bool
	// contains filtered or unexported fields
}

func (*NodeData) BuilderEdges added in v0.1.0

func (nodeData *NodeData) BuilderEdges(s *Schema) []*edge.AssociationEdge

edges that are in the builder directly

func (*NodeData) FieldsWithEditFieldPrivacy added in v0.1.0

func (nodeData *NodeData) FieldsWithEditFieldPrivacy() bool

func (*NodeData) FieldsWithFieldPrivacy added in v0.1.0

func (nodeData *NodeData) FieldsWithFieldPrivacy() bool

func (*NodeData) GenerateGetIDInBuilder added in v0.1.0

func (nodeData *NodeData) GenerateGetIDInBuilder() bool

func (*NodeData) GetActionByGraphQLName

func (nodeData *NodeData) GetActionByGraphQLName(graphQLName string) action.Action

func (*NodeData) GetActionInfo

func (nodeData *NodeData) GetActionInfo() *action.ActionInfo

func (*NodeData) GetAssociationEdgeByName

func (nodeData *NodeData) GetAssociationEdgeByName(edgeName string) *edge.AssociationEdge

func (*NodeData) GetBuilderMixinInfo added in v0.1.0

func (nodeData *NodeData) GetBuilderMixinInfo(s *Schema) (*mixinInfo, error)

func (*NodeData) GetCanViewerDoInfo added in v0.1.0

func (nodeData *NodeData) GetCanViewerDoInfo() map[string]action.Action

func (*NodeData) GetCanViewerEditInfo added in v0.1.0

func (nodeData *NodeData) GetCanViewerEditInfo() *CanViewerSeeInfo

func (*NodeData) GetCanViewerSeeInfo added in v0.1.0

func (nodeData *NodeData) GetCanViewerSeeInfo() *CanViewerSeeInfo

func (*NodeData) GetConstantGroups

func (obj *NodeData) GetConstantGroups() map[string]*ConstGroupInfo

func (*NodeData) GetDestinationEdgeByName

func (nodeData *NodeData) GetDestinationEdgeByName(edgeName string) edge.ConnectionEdge

func (*NodeData) GetEdgeInfo

func (nodeData *NodeData) GetEdgeInfo() *edge.EdgeInfo

func (*NodeData) GetExtraCustomQueryInfo added in v0.1.0

func (nodeData *NodeData) GetExtraCustomQueryInfo() *extraCustomQueryInfo

func (*NodeData) GetFieldByName

func (nodeData *NodeData) GetFieldByName(fieldName string) *field.Field

func (*NodeData) GetFieldEdgeByName

func (nodeData *NodeData) GetFieldEdgeByName(edgeName string) *edge.FieldEdge

func (*NodeData) GetFieldInfo

func (nodeData *NodeData) GetFieldInfo() *field.FieldInfo

func (*NodeData) GetFieldLoaderName

func (nodeData *NodeData) GetFieldLoaderName(field *field.Field) string

func (*NodeData) GetFieldLoaderNoTransformName added in v0.0.39

func (nodeData *NodeData) GetFieldLoaderNoTransformName(field *field.Field) string

func (*NodeData) GetFieldQueryName

func (nodeData *NodeData) GetFieldQueryName(field *field.Field) (string, error)

func (*NodeData) GetForeignKeyEdgeByName

func (nodeData *NodeData) GetForeignKeyEdgeByName(edgeName string) *edge.ForeignKeyEdge

func (*NodeData) GetGraphQLTypeName added in v0.1.0

func (nodeData *NodeData) GetGraphQLTypeName() string

func (*NodeData) GetImportPathsForDependencies

func (nodeData *NodeData) GetImportPathsForDependencies(s *Schema) []*tsimport.ImportPath

TODO kill this GetImportPathsForDependencies returns imports needed in dependencies e.g. actions and builders

func (*NodeData) GetImportsForBaseFile

func (nodeData *NodeData) GetImportsForBaseFile(s *Schema, cfg codegenapi.Config) ([]*tsimport.ImportPath, error)

TODO kill this GetImportsForBaseFile returns list of imports needed in the base generated file

func (*NodeData) GetImportsForQueryBaseFile

func (nodeData *NodeData) GetImportsForQueryBaseFile(s *Schema) ([]*tsimport.ImportPath, error)

TODO kill this

func (*NodeData) GetLoaderName added in v0.0.39

func (nodeData *NodeData) GetLoaderName() string

func (*NodeData) GetLoaderNoTransformName added in v0.0.39

func (nodeData *NodeData) GetLoaderNoTransformName() string

func (*NodeData) GetMixinInfo added in v0.1.0

func (nodeData *NodeData) GetMixinInfo(s *Schema, cfg codegenapi.Config) (*mixinInfo, error)

func (*NodeData) GetName

func (nodeData *NodeData) GetName() string

func (*NodeData) GetNodeInstance

func (nodeData *NodeData) GetNodeInstance() string

func (*NodeData) GetNodeLoaders

func (nodeData *NodeData) GetNodeLoaders() [][]*loader

GetNodeLoaders returns groups of loaders that can be primed e.g. if there's a transform, loaders which query with transformation can prime the other but those which don't query with transformations can't be

func (*NodeData) GetOnEntLoadPrivacyInfo added in v0.1.0

func (nodeData *NodeData) GetOnEntLoadPrivacyInfo(cfg codegenapi.Config) *entLoadPrivacyInfo

func (*NodeData) GetQuotedTableName

func (nodeData *NodeData) GetQuotedTableName() string

func (*NodeData) GetRawDBDataName added in v0.1.0

func (nodeData *NodeData) GetRawDBDataName() string

func (*NodeData) GetSchemaConst added in v0.1.0

func (nodeData *NodeData) GetSchemaConst() string

func (*NodeData) GetSchemaPath added in v0.0.39

func (nodeData *NodeData) GetSchemaPath() string

func (*NodeData) GetSortedConstantGroups

func (obj *NodeData) GetSortedConstantGroups() []*ConstGroupInfo

func (*NodeData) GetTSEnums

func (nodeData *NodeData) GetTSEnums() []*enum.Enum

func (*NodeData) GetTableName

func (nodeData *NodeData) GetTableName() string

func (*NodeData) GetUniqueNodes

func (nodeData *NodeData) GetUniqueNodes() []uniqueNodeInfo

GetUniqueNodes returns node info that this Node has edges to

func (*NodeData) GetUpsertInfo added in v0.1.0

func (nodeData *NodeData) GetUpsertInfo(actionName string) *UpsertInfo

func (*NodeData) HasAssocGroups

func (nodeData *NodeData) HasAssocGroups() bool

func (*NodeData) HasAssociationEdges

func (nodeData *NodeData) HasAssociationEdges() bool

func (*NodeData) HasCanViewerDo added in v0.1.0

func (nodeData *NodeData) HasCanViewerDo() bool

func (*NodeData) HasMixins added in v0.1.0

func (nodeData *NodeData) HasMixins() bool

func (*NodeData) HasPrivateField

func (nodeData *NodeData) HasPrivateField(cfg codegenapi.Config) bool

func (*NodeData) IsPattern

func (nodeData *NodeData) IsPattern() bool

func (*NodeData) OnEntLoadFieldPrivacy added in v0.1.0

func (nodeData *NodeData) OnEntLoadFieldPrivacy(cfg codegenapi.Config) bool

func (*NodeData) OverrideSchemaPath added in v0.1.0

func (nodeData *NodeData) OverrideSchemaPath(schemaPath string)

type NodeDataInfo

type NodeDataInfo struct {
	NodeData      *NodeData
	ShouldCodegen bool
	// contains filtered or unexported fields
}

NodeDataInfo stores information related to a particular Node

type NodeMapInfo

type NodeMapInfo map[string]*NodeDataInfo

NodeMapInfo holds all the information about the schema It's a mapping of "packageName" to NodeDataInfo objects

func (NodeMapInfo) HideFromGraphQL

func (m NodeMapInfo) HideFromGraphQL(edge edge.Edge) bool

type PatternInfo

type PatternInfo struct {
	Name       string
	FieldInfo  *field.FieldInfo
	EdgeInfo   *edge.EdgeInfo
	AssocEdges map[string]*edge.AssociationEdge

	DisableMixin bool
	// contains filtered or unexported fields
}

func (*PatternInfo) ForeignImport added in v0.1.0

func (p *PatternInfo) ForeignImport(imp string) bool

func (*PatternInfo) GetActionInfo

func (p *PatternInfo) GetActionInfo() *action.ActionInfo

func (*PatternInfo) GetBuilderInterfaceName added in v0.1.0

func (p *PatternInfo) GetBuilderInterfaceName() string

func (*PatternInfo) GetBuilderName added in v0.1.0

func (p *PatternInfo) GetBuilderName() string

func (*PatternInfo) GetConstantGroups

func (obj *PatternInfo) GetConstantGroups() map[string]*ConstGroupInfo

func (*PatternInfo) GetEdgeInfo

func (p *PatternInfo) GetEdgeInfo() *edge.EdgeInfo

func (*PatternInfo) GetFieldInfo

func (p *PatternInfo) GetFieldInfo() *field.FieldInfo

func (*PatternInfo) GetImportPathForMixinBase

func (p *PatternInfo) GetImportPathForMixinBase() string

func (*PatternInfo) GetImportsForMixin added in v0.1.0

func (p *PatternInfo) GetImportsForMixin(s *Schema, cfg codegenapi.Config) []*tsimport.ImportPath

func (*PatternInfo) GetImportsForQueryBaseFile

func (p *PatternInfo) GetImportsForQueryBaseFile(s *Schema) ([]*tsimport.ImportPath, error)

borrowed for builder.tmpl

func (*PatternInfo) GetMixinBaseFile

func (p *PatternInfo) GetMixinBaseFile() string

func (*PatternInfo) GetMixinBaseName

func (p *PatternInfo) GetMixinBaseName() string

func (*PatternInfo) GetMixinInterfaceBaseName

func (p *PatternInfo) GetMixinInterfaceBaseName() string

func (*PatternInfo) GetMixinInterfaceName added in v0.1.0

func (p *PatternInfo) GetMixinInterfaceName() string

func (*PatternInfo) GetMixinName added in v0.1.0

func (p *PatternInfo) GetMixinName() string

func (*PatternInfo) GetMixinWithInterfaceName added in v0.1.0

func (p *PatternInfo) GetMixinWithInterfaceName() string

func (*PatternInfo) GetName

func (p *PatternInfo) GetName() string

func (*PatternInfo) GetNodeInstance

func (p *PatternInfo) GetNodeInstance() string

func (*PatternInfo) GetPatternMethod added in v0.1.0

func (p *PatternInfo) GetPatternMethod() string

func (*PatternInfo) GetSortedConstantGroups

func (obj *PatternInfo) GetSortedConstantGroups() []*ConstGroupInfo

func (*PatternInfo) GetSortedEdges

func (p *PatternInfo) GetSortedEdges() []*edge.AssociationEdge

func (*PatternInfo) HasBuilder added in v0.1.0

func (p *PatternInfo) HasBuilder() bool

func (*PatternInfo) HasFields added in v0.1.0

func (p *PatternInfo) HasFields() bool

func (*PatternInfo) HasMixin added in v0.1.0

func (p *PatternInfo) HasMixin() bool

the main value that currently exists for mixins with no fields seems to be marker interface

func (*PatternInfo) IsPattern

func (p *PatternInfo) IsPattern() bool

type Schema

type Schema struct {
	Nodes    NodeMapInfo
	Patterns map[string]*PatternInfo

	Enums map[string]*EnumInfo

	CustomInterfaces map[string]*customtype.CustomInterface
	// contains filtered or unexported fields
}

Schema is the representation of the parsed schema. Has everything needed to

func ParseFromInputSchema

func ParseFromInputSchema(cfg codegenapi.Config, schema *input.Schema, lang base.Language) (*Schema, error)

ParseFromInputSchema takes the schema that has been parsed from whatever input source and provides the schema we have that's checked and conforms to everything we expect

func (*Schema) EnumNameExists

func (s *Schema) EnumNameExists(enum string) bool

func (*Schema) ExtraEdgeFields added in v0.1.0

func (s *Schema) ExtraEdgeFields() []*field.Field

func (*Schema) GetActionFromGraphQLName

func (s *Schema) GetActionFromGraphQLName(graphQLName string) action.Action

func (*Schema) GetAssocEdgeByName

func (s *Schema) GetAssocEdgeByName(nodeName, edgeName string) (*edge.AssociationEdge, error)

below really only exist for tests but yolo

func (*Schema) GetCustomTypeByTSName added in v0.1.0

func (s *Schema) GetCustomTypeByTSName(name string) field.CustomTypeWithHasConvertFunction

func (*Schema) GetEdges

func (s *Schema) GetEdges() map[string]*ent.AssocEdgeData

GetEdges returns all the edges in the schema

func (*Schema) GetEdgesToUpdate

func (s *Schema) GetEdgesToUpdate() []*ent.AssocEdgeData

GetEdgesToUpdate returns edges in the schema that have changed which need to be updated

func (*Schema) GetFieldByName

func (s *Schema) GetFieldByName(nodeName, fieldName string) (*field.Field, error)

func (*Schema) GetGlobalCanViewerDo added in v0.1.0

func (s *Schema) GetGlobalCanViewerDo() map[string]action.Action

func (*Schema) GetGlobalConsts added in v0.1.0

func (s *Schema) GetGlobalConsts() WithConst

func (*Schema) GetGlobalEdges added in v0.1.0

func (s *Schema) GetGlobalEdges() []*edge.AssociationEdge

func (*Schema) GetGlobalEnums added in v0.1.0

func (s *Schema) GetGlobalEnums() map[string]*EnumInfo

func (*Schema) GetInputSchema added in v0.0.38

func (s *Schema) GetInputSchema() *input.Schema

func (*Schema) GetNewEdges

func (s *Schema) GetNewEdges() []*ent.AssocEdgeData

GetNewEdges only exists for testing purposes to differentiate between existing and new edges

func (*Schema) GetNodeDataForNode

func (s *Schema) GetNodeDataForNode(nodeName string) (*NodeData, error)

func (*Schema) GetNodeDataFromGraphQLName

func (s *Schema) GetNodeDataFromGraphQLName(nodeName string) *NodeData

func (*Schema) GetNodeDataFromTableName

func (s *Schema) GetNodeDataFromTableName(tableName string) *NodeData

func (*Schema) GlobalSchemaTransformsEdges added in v0.1.0

func (s *Schema) GlobalSchemaTransformsEdges() bool

func (*Schema) InitGlobalSchema added in v0.1.0

func (s *Schema) InitGlobalSchema() bool

func (*Schema) IsGlobalEnumWithDisableUnknownType added in v0.1.5

func (s *Schema) IsGlobalEnumWithDisableUnknownType(typ string) bool

func (*Schema) NameExists

func (s *Schema) NameExists(k string) bool

func (*Schema) NodeNameExists

func (s *Schema) NodeNameExists(nodeName string) bool

func (*Schema) PatternFieldWithMixin added in v0.1.0

func (s *Schema) PatternFieldWithMixin(f *field.Field) bool

type TypeInfo added in v0.1.0

type TypeInfo struct {
	Export     bool
	Name       string
	Expression string
	// contains filtered or unexported fields
}

func (*TypeInfo) Type added in v0.1.0

func (ti *TypeInfo) Type() string

type UpsertInfo added in v0.1.0

type UpsertInfo struct {
	Name          string
	HasColumn     bool
	HasConstraint bool
	// contains filtered or unexported fields
}

func (*UpsertInfo) Types added in v0.1.0

func (ui *UpsertInfo) Types() string

type WithConst

type WithConst interface {
	GetNodeInstance() string
	GetConstantGroups() map[string]*ConstGroupInfo
	// contains filtered or unexported methods
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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