schema

package
v0.0.39-alpha1 Latest Latest
Warning

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

Go to latest
Published: Mar 18, 2022 License: MIT Imports: 31 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

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
	// contains filtered or unexported fields
}

func (*NodeData) ForeignImport added in v0.0.38

func (nodeData *NodeData) ForeignImport(imp string) 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) 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) GetFieldQueryName

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

func (*NodeData) GetForeignKeyEdgeByName

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

func (*NodeData) GetImportPathsForDependencies

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

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

func (*NodeData) GetImportsForBaseFile

func (nodeData *NodeData) GetImportsForBaseFile() ([]*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) GetNodeInstance

func (nodeData *NodeData) GetNodeInstance() string

func (*NodeData) GetNodeLoaders

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

func (*NodeData) GetQuotedTableName

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

func (nodeData *NodeData) HasJSONField() bool

HasJSONField returns a boolean indicating if this Node has any JSON fields If so, we disable StructScan because we don't implement driver.Value and calling row.StructScan() will fail since the datatype in the db doesn't map to what's in the struct

func (*NodeData) HasPrivateField

func (nodeData *NodeData) HasPrivateField() bool

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                           `json:"name"`
	AssocEdges map[string]*edge.AssociationEdge `json:"assocEdges"`
	// contains filtered or unexported fields
}

func (*PatternInfo) GetConstantGroups

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

func (*PatternInfo) GetImportsForQueryBaseFile

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

func (*PatternInfo) GetNodeInstance

func (p *PatternInfo) GetNodeInstance() string

func (*PatternInfo) GetSortedConstantGroups

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

func (*PatternInfo) GetSortedEdges

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

type Schema

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

	// unlike Nodes, the key is "EnumName" instead of "EnumNameConfig"
	// confusing but gets us closer to what we want
	Enums map[string]*EnumInfo
	// contains filtered or unexported fields
}

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

func Parse

func Parse(p schemaparser.Parser, specificConfigs ...string) (*Schema, error)

Given a schema file parser, Parse parses the schema to return the completely parsed schema

func ParseFromInputSchema

func ParseFromInputSchema(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 ParsePackage

func ParsePackage(pkg *packages.Package, specificConfigs ...string) (*Schema, error)

func (*Schema) EnumNameExists

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

func (*Schema) GetActionFromGraphQLName

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

func (*Schema) GetAssocEdgeByName

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

below really only exist for tests but yolo

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(entConfig, fieldName string) (*field.Field, error)

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

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

func (*Schema) NodeNameExists

func (s *Schema) NodeNameExists(nodeName string) 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