schema

package
v0.1.0-alpha.52-test Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2023 License: MIT Imports: 25 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 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 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

func (*EnumInfo) OwnEnumFile added in v0.0.37

func (info *EnumInfo) OwnEnumFile() bool

OwnEnumFile: LookupTable enums or enums from patterns get their own file TODO kill this. all enums go in types.ts...

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

	TransformsSelect        bool
	TransformsDelete        bool
	TransformsLoaderCodegen *input.TransformsLoaderCodegen
	// 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) FieldsWithFieldPrivacy added in v0.1.0

func (nodeData *NodeData) FieldsWithFieldPrivacy() bool

func (*NodeData) ForeignImport added in v0.0.38

func (nodeData *NodeData) ForeignImport(imp string) bool

TODO kill seems like it was mostly used for enums

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) 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) GetConstantGroups

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

func (*NodeData) GetDestinationEdgeByName

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

func (*NodeData) GetFieldByName

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

func (*NodeData) GetFieldEdgeByName

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

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) (*mixinInfo, error)

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) GetQuotedTableName

func (nodeData *NodeData) GetQuotedTableName() 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) HasAssocGroups

func (nodeData *NodeData) HasAssocGroups() bool

func (*NodeData) HasAssociationEdges

func (nodeData *NodeData) HasAssociationEdges() 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) 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
	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) 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) 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) 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) 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

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) 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) 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) InitForEdges

func (s *Schema) InitForEdges() 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 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