Documentation
¶
Overview ¶
Package datatug holds the DataTug project model: entities, queries, environments, boards and their validation rules. It is a pure model+engine library with no HTTP surface and no concrete DB drivers.
Query text sidecar file naming ¶
A QueryDef with non-empty Text is persisted as two files under the queries folder, both derived from QueryDef.ID and storage.QueryFileSuffix ("query"):
- "<id>.query.json" - the QueryDef itself (Text stripped), always written.
- "<id>.query.<ext>" - the query body, written only when Text is non-empty, where <ext> is strings.ToLower(string(QueryDef.Type)).
This holds for every query type, including DTQL: a DTQL query's body sits in "<id>.query.dtql" beside its "<id>.query.json" sidecar, following the same convention as "<id>.query.sql" and "<id>.query.http" rather than the standalone "<id>.dtql.yaml" name floated in early planning notes - no special-casing was needed since pkg/storage/filestore already derives the extension generically from QueryDef.Type. The body itself is expected to be the YAML produced by DALgo's dtql package (see REQ:dtql-query-type in datatug/datatug's core-investigation-loop feature); the ".dtql" suffix labels the query type, not the serialization format, matching how ".sql" and ".http" already behave.
Index ¶
- Constants
- Variables
- func EmbeddedCredentialReason(value string) (reason string, found bool)
- func GeProjectItemByID[T IProjectItem](items ProjectItems[T], id string) (t T)
- func IsIncompleteQueryRecord(err error) bool
- func IsInvalidQueryLocation(err error) bool
- func IsKnownCollectionType(v CollectionType) bool
- func IsKnownQueryType(queryType QueryType) bool
- func IsQueryRevisionConflict(err error) bool
- func IsValidateStoreType(v string) bool
- func ProjectDoesNotExist(err error) bool
- func ValidateFolderPath(folderPath string) error
- func ValidateName(name string) error
- func ValidateTitle(title string) error
- type Action
- type Actions
- type ApiEndpoint
- type ApiService
- type Board
- type BoardCard
- type BoardCards
- type BoardRow
- type BoardRows
- type BoardWidget
- type Boards
- type BoardsStore
- type CatalogObject
- type CatalogObjectWithRefs
- type CatalogObjects
- type CatalogObjectsWithRefs
- type ChangeType
- type Changeset
- type ChangesetDef
- type ChangesetRefToDataset
- type CharacterSet
- type Check
- type Checks
- type Collation
- type CollectionInfo
- type CollectionType
- type ColumnDiff
- type ColumnInfo
- type ColumnModel
- type ColumnModels
- type ColumnsDiff
- type Constraint
- type Credentials
- type DBCollectionKey
- type DatabaseDifferences
- type DatasetDef
- type DatasetRefToRecordset
- type DbCatalog
- type DbCatalogBase
- type DbCatalogCounts
- type DbCatalogSummary
- type DbCatalogs
- type DbCatalogsStore
- type DbColumnProps
- type DbModel
- type DbModelDbCatalog
- type DbModelDbCatalogs
- type DbModelEnv
- type DbModelEnvironments
- type DbModels
- type DbModelsStore
- type DbSchema
- type DbSchemas
- type DbSchemasStore
- type DiffDbRef
- type Entities
- type EntitiesStore
- type Entity
- type EntityField
- type EntityFieldRef
- type EntityFields
- type EnvDb
- type EnvDbCatalogStore
- type EnvDbDifference
- type EnvDbServer
- type EnvDbServers
- type EnvDbServersStore
- type EnvState
- type Environment
- type EnvironmentFile
- type EnvironmentSummary
- type Environments
- type EnvironmentsStore
- type Folder
- type FolderBrief
- type FolderItem
- type Folders
- type FoldersStore
- type ForeignKey
- type ForeignKeys
- type HTTPHeaderItem
- type HTTPHeaders
- type HTTPRequest
- type HTTPWidgetDef
- type HideRecordsetColIf
- type HitAndMiss
- type IProjectItem
- type IProjectItems
- type IncompleteQueryRecordError
- type Index
- type IndexColumn
- type Indexes
- type InvalidQueryLocationError
- type Issues
- type ListOfTags
- type OptionsValueCheck
- type Parameter
- type ParameterDef
- type ParameterLookup
- type Parameters
- type PhysicalRef
- type PhysicalRefs
- type ProjBoardBrief
- type ProjDbDriver
- type ProjDbDrivers
- type ProjDbDriversStore
- type ProjDbModelBrief
- type ProjDbModelNumbers
- type ProjDbServer
- type ProjDbServerFile
- type ProjDbServerSummary
- type ProjDbServers
- type ProjDbServersStore
- type ProjEntityBrief
- type ProjEnvBrief
- type ProjEnvNumbers
- type ProjItemBrief
- type Project
- func (p *Project) AddProjDbServer(ctx context.Context, dbServer *ProjDbServer) (err error)
- func (p *Project) GetDBs(ctx context.Context, o ...StoreOption) (dbs ProjDbDrivers, err error)
- func (p *Project) GetEnvironments(ctx context.Context) (environments Environments, err error)
- func (p *Project) GetProjDbServer(ctx context.Context, serverRef ServerRef) (server *ProjDbServer, err error)
- func (p *Project) Validate() error
- type ProjectBrief
- type ProjectCreated
- type ProjectFile
- type ProjectItem
- type ProjectItems
- type ProjectLoader
- type ProjectRepository
- type ProjectStore
- type ProjectSummary
- type ProjectVisibility
- type ProjectsStore
- type PropertyDiff
- type QueriesFolder
- type QueriesStore
- type QueryCapture
- type QueryCaptureBinding
- type QueryDef
- type QueryDefBrief
- type QueryDefTarget
- type QueryDefWithFolderPath
- type QueryDefs
- type QueryFolderBrief
- type QueryFolders
- type QueryResult
- type QueryRevision
- type QueryRevisionConflictError
- type QueryType
- type QueryWriteCondition
- type ReadmeEncoder
- type Recordset
- type RecordsetBaseDef
- type RecordsetColumn
- type RecordsetColumnDef
- type RecordsetColumnDefs
- type RecordsetDefinition
- type RecordsetDefinitions
- type RecordsetDefinitionsStore
- type RefByForeignKey
- type ReferencedBy
- type ReferencedBys
- type RegexpValueCheck
- type RepoRootFile
- type RevisionedQueriesStore
- type SQLCheck
- type SQLWidgetDef
- type SQLWidgetSettings
- type Schema
- type SchemaDiff
- type SchemaModels
- type SchemasDiff
- type ServerRef
- type ServerReferences
- type StateByEnv
- type StatusReporter
- type Step
- type StoreBrief
- type StoreOption
- type StoreOptions
- type StoredQuery
- type StringPattern
- type StringPatterns
- type TabWidget
- type TableColumns
- type TableDiff
- type TableKeys
- type TableModel
- type TableModels
- type TableProps
- type Tables
- type TablesDiff
- type TabsWidgetDef
- type UniqueKey
- type UniqueKeys
- type User
- type UserDatatugInfo
- type ValueRegexCheck
- type VarInfo
- type VarSetting
- type Variables
- type VarsByID
- type WidgetBase
- type WidgetParameterBinding
- type WidgetParameterBindings
Constants ¶
const ( QueryCaptureOriginSelection = "selection" QueryCaptureOriginContext = "context" QueryCaptureOriginManual = "manual" )
Origins a captured parameter binding may record. A captured query stores how each parameter was bound while the user explored, not the bound value: default values are never captured (a captured value would put a possibly protected record identifier into git-tracked project files), so there is no "default" origin here. Every origin is client-reported; the server never attests it.
const ( // TypeString = "string" TypeString = "string" // TypeText = "text" TypeText = "text" // TypeJSON = "JSON" TypeJSON = "JSON" // TypeBit = "bit" TypeBit = "bit" // TypeBoolean = "boolean" TypeBoolean = "boolean" // TypeNumber = "number" TypeNumber = "number" // TypeInteger = "integer" TypeInteger = "integer" // TypeDecimal = "decimal" TypeDecimal = "decimal" // TypeFloat = "float" TypeFloat = "float" // TypeMoney = "money" TypeMoney = "money" // TypeDate = "date" TypeDate = "date" // TypeDateTime = "datetime" TypeDateTime = "datetime" // TypeTime = "time" TypeTime = "time" // TypeGUID = "GUID" TypeGUID = "GUID" // TypeUUID = "UUID" TypeUUID = "UUID" // TypeBinary = "binary" TypeBinary = "binary" // TypeImage = "image" TypeImage = "image" )
const FoldersPathSeparator = `/`
FoldersPathSeparator defines a character to be used in folders path
const MaxTagLength = 50
MaxTagLength defines maximum length of a tag = 100
const MaxTitleLength = 100
MaxTitleLength defines maximum length of a title = 100
RootSharedFolderName defines name for a root shared folder
const RootUserFolderPrefix = "user:"
Variables ¶
var ErrIncompleteQueryRecord = errors.New("incomplete query record")
ErrIncompleteQueryRecord is the sentinel every IncompleteQueryRecordError wraps. A later HTTP adapter maps it to 400 (a malformed/incomplete resource state) rather than treating it as "not found."
var ErrInvalidQueryLocation = errors.New("invalid query location")
ErrInvalidQueryLocation is the sentinel every InvalidQueryLocationError wraps. A later HTTP adapter maps it to 400.
var ErrProjectDoesNotExist = errors.New("project does not exist")
ErrProjectDoesNotExist is an error that indicates a project does not exist
var ErrQueryRevisionConflict = errors.New("query revision conflict")
ErrQueryRevisionConflict is the sentinel every QueryRevisionConflictError wraps. A later HTTP adapter maps it to 409.
var KnownTypes = []string{ TypeString, TypeText, TypeJSON, TypeBit, TypeBoolean, TypeNumber, TypeInteger, TypeDecimal, TypeFloat, TypeMoney, TypeDate, TypeDateTime, TypeTime, TypeGUID, TypeUUID, TypeBinary, TypeImage, }
KnownTypes enumerates list of known types
Functions ¶
func EmbeddedCredentialReason ¶ added in v0.28.0
EmbeddedCredentialReason reports why value appears to embed a secret - a password, token or key - in one of the syntaxes the package's credential-screening notes list (a URL or DSN userinfo, a secret key/value pair or JSON member, an HTTP credential header), or ("", false) when it does not. A username alone is never refused. It is the one screening function for anything that is persisted to git-tracked project files; QueryDefTarget.Validate and QueryDef.Validate use it, and so can any other caller that must keep secrets out of a project.
func GeProjectItemByID ¶ added in v0.16.0
func GeProjectItemByID[T IProjectItem](items ProjectItems[T], id string) (t T)
func IsIncompleteQueryRecord ¶ added in v0.28.0
IsIncompleteQueryRecord reports whether err is (or wraps) an IncompleteQueryRecordError.
func IsInvalidQueryLocation ¶ added in v0.28.0
IsInvalidQueryLocation reports whether err is (or wraps) an InvalidQueryLocationError.
func IsKnownCollectionType ¶ added in v0.14.0
func IsKnownCollectionType(v CollectionType) bool
func IsKnownQueryType ¶ added in v0.15.10
func IsQueryRevisionConflict ¶ added in v0.28.0
IsQueryRevisionConflict reports whether err is (or wraps) a QueryRevisionConflictError.
func IsValidateStoreType ¶
IsValidateStoreType checks if storage type has valid value
func ProjectDoesNotExist ¶
ProjectDoesNotExist reports if an error is a wrapper around ErrProjectDoesNotExist
func ValidateFolderPath ¶
ValidateFolderPath validates folder path
Types ¶
type Action ¶
type Action struct {
ProjectItem
Type string `json:"type"`
Data interface{} `json:"data"`
Next Actions `json:"next"`
}
Action does something that affects context
type ApiEndpoint ¶
type ApiEndpoint struct {
ProjectItem
QueryType string `json:"queryType" firestore:"queryType"` // REST, RPC, GraphQL
Method string `json:"method" firestore:"method"`
UrlSchema string `json:"urlSchema" firestore:"urlSchema"`
UrlHost string `json:"urlHost" firestore:"urlHost"`
UrlPath string `json:"urlPath" firestore:"urlPath"`
FavoritesCount int `json:"favoritesCount" firestore:"favoritesCount"`
VotesScore int `json:"votesScore" firestore:"votesScore"`
VotesUp int `json:"votesUp" firestore:"votesUp"`
VotesDown int `json:"votesDown" firestore:"votesDown"`
}
func (ApiEndpoint) Validate ¶
func (v ApiEndpoint) Validate() error
type ApiService ¶
type ApiService struct {
ProjectItem
}
func (ApiService) Validate ¶
func (v ApiService) Validate() error
type Board ¶
type Board struct {
ProjectItem
// Parameters mirrors ProjBoardBrief.Parameters so the brief and the full board stay in step.
Parameters Parameters `json:"parameters,omitempty" firestore:"parameters,omitempty"`
// RequiredParams mirrors ProjBoardBrief.RequiredParams so the brief and the full board stay in step.
RequiredParams [][]string `json:"requiredParams,omitempty" firestore:"requiredParams,omitempty"`
Rows BoardRows `json:"rows,omitempty" firestore:"rows,omitempty"`
}
Board is holding all details about board
type BoardCard ¶
type BoardCard struct {
ID string `json:"id"`
Title string `json:"title"`
Cols int `json:"cols,omitempty"`
Widget *BoardWidget `json:"widget,omitempty"`
}
BoardCard describes board card
type BoardCards ¶
type BoardCards []BoardCard
BoardCards is slice of BoardCard
func (BoardCards) Validate ¶
func (v BoardCards) Validate() error
Validate returns error if not valid
type BoardRow ¶
type BoardRow struct {
MinHeight string `json:"minHeight,omitempty"`
MaxHeight string `json:"maxHeight,omitempty"`
Cards BoardCards `json:"cards,omitempty"`
}
BoardRow holds all details about a row in a board
type BoardWidget ¶
type BoardWidget struct {
Name string `json:"name"`
Data interface{} `json:"data,omitempty"`
}
BoardWidget specifies widget. Some widgets can contain otter widgets.
func (BoardWidget) Validate ¶
func (v BoardWidget) Validate() (err error)
Validate returns error if failed
type BoardsStore ¶ added in v0.15.0
type CatalogObject ¶
type CatalogObject struct {
Type string `json:"type"`
Schema string `json:"schema"`
Name string `json:"name"`
DefaultAlias string `json:"defaultAlias,omitempty"`
}
CatalogObject used in list of objects
func (CatalogObject) Validate ¶
func (v CatalogObject) Validate() error
Validate returns error if not valid
type CatalogObjectWithRefs ¶
type CatalogObjectWithRefs struct {
CatalogObject
PrimaryKey *UniqueKey `json:"primaryKey,omitempty"`
ForeignKeys ForeignKeys `json:"foreignKeys,omitempty"`
ReferencedBy ReferencedBys `json:"referencedBy,omitempty"`
}
CatalogObjectWithRefs defines ref to catalog object
func (CatalogObjectWithRefs) Validate ¶
func (v CatalogObjectWithRefs) Validate() error
Validate returns error if not valid
type CatalogObjects ¶
type CatalogObjects []CatalogObject
CatalogObjects defines list of catalog objects
func (CatalogObjects) Validate ¶
func (v CatalogObjects) Validate() error
Validate returns error if not valid
type CatalogObjectsWithRefs ¶
type CatalogObjectsWithRefs []CatalogObjectWithRefs
CatalogObjectsWithRefs defines slice
func (CatalogObjectsWithRefs) Validate ¶
func (v CatalogObjectsWithRefs) Validate() error
Validate returns error if not valid
type ChangeType ¶
type ChangeType int
ChangeType defines what kind of change performed or to be performed
const ( ChangeTypeUnchanged ChangeType = iota ChangeTypeAdded ChangeTypeAltered ChangeTypeDeleted )
type Changeset ¶
type Changeset struct {
Status string `json:"status"`
Datasets []DatasetDef `json:"datasets"`
}
Changeset holds a set of data changes to be applied
type ChangesetDef ¶
type ChangesetDef struct {
ProjectItem
Datasets []ChangesetRefToDataset `json:"datasets"`
}
ChangesetDef defines a set of changes to be applied
type ChangesetRefToDataset ¶
ChangesetRefToDataset defines a reference to a dataset
type CharacterSet ¶
type CharacterSet struct {
Catalog string `json:"Catalog,omitempty"`
Schema string `json:"Schema,omitempty"`
Name string `json:"GetID"`
}
CharacterSet holds info about character set
func (CharacterSet) Validate ¶
func (v CharacterSet) Validate() error
Validate returns error if not valid
type Check ¶
type Check struct {
ID string `json:"id"` // This a random ID uniquely identifying a specific check instance
Title string `json:"title,omitempty"`
Type string `json:"type"`
Data json.RawMessage `json:"data,omitempty"`
}
Check defines a check
type Collation ¶
type Collation struct {
Catalog string `json:"catalog,omitempty"`
Schema string `json:"schema,omitempty"`
Name string `json:"name"`
}
Collation holds info about collation
type CollectionInfo ¶
type CollectionInfo struct {
DBCollectionKey
RecordsetBaseDef
TableProps
DDL string `json:"ddl,omitempty"` // Data Definition Language
Columns TableColumns `json:"columns,omitempty"`
Indexes []*Index `json:"indexes,omitempty"`
ReferencedBy ReferencedBys `json:"referencedBy,omitempty"`
RecordsCount *int `json:"recordsCount,omitempty"`
}
CollectionInfo holds metadata about a collection or a table or a view
func (CollectionInfo) Validate ¶
func (v CollectionInfo) Validate() error
Validate returns error if not valid
type CollectionType ¶ added in v0.14.0
type CollectionType string
const ( CollectionTypeAny = "*" CollectionTypeUnknown CollectionType = "" CollectionTypeTable CollectionType = "table" CollectionTypeView CollectionType = "view" )
type ColumnInfo ¶
type ColumnInfo struct {
DbColumnProps
//ChangeType ChangeType `json:"-"` // Document what it is and why needed
//ByEnv map[string]ColumnInfo `json:"byEnv,omitempty"`
Constraints []string `json:"constraints,omitempty"`
}
ColumnInfo holds column metadata
func (ColumnInfo) Validate ¶
func (v ColumnInfo) Validate() error
Validate returns error if not valid
type ColumnModel ¶
type ColumnModel struct {
ColumnInfo
ByEnv StateByEnv `json:"byEnv,omitempty"`
Checks Checks `json:"checks,omitempty"`
}
ColumnModel defines a column as we expect it to be
func (*ColumnModel) Validate ¶
func (v *ColumnModel) Validate() error
Validate returns error if not valid
type ColumnModels ¶
type ColumnModels []*ColumnModel
ColumnModels is a slice of *ColumnModel
func (ColumnModels) Validate ¶
func (v ColumnModels) Validate() error
Validate returns error if not valid
type Constraint ¶
Constraint defines constraint
func (Constraint) Validate ¶
func (v Constraint) Validate() error
Validate returns error if not valid
type Credentials ¶
type Credentials struct {
Username string `json:"username,omitempty" yaml:"username,omitempty"`
Password string `json:"password,omitempty" yaml:"password,omitempty"`
}
Credentials holds username & password
func (Credentials) Validate ¶
func (v Credentials) Validate() error
Validate returns error if failed
type DBCollectionKey ¶ added in v0.14.2
type DBCollectionKey struct {
Ref dal.CollectionRef
// contains filtered or unexported fields
}
DBCollectionKey defines a key that identifies a table or a view
func NewCollectionKey ¶ added in v0.14.0
func NewCollectionKey(t CollectionType, name, schema, catalog string, parent *record.Key) DBCollectionKey
func NewTableKey ¶ added in v0.14.0
func NewTableKey(name, schema, catalog string, parent *record.Key) DBCollectionKey
func NewViewKey ¶ added in v0.14.0
func NewViewKey(name, schema, catalog string, parent *record.Key) DBCollectionKey
func (DBCollectionKey) Catalog ¶ added in v0.14.2
func (v DBCollectionKey) Catalog() string
func (DBCollectionKey) Name ¶ added in v0.14.2
func (v DBCollectionKey) Name() string
func (DBCollectionKey) Schema ¶ added in v0.14.2
func (v DBCollectionKey) Schema() string
func (DBCollectionKey) String ¶ added in v0.14.2
func (v DBCollectionKey) String() string
func (DBCollectionKey) Type ¶ added in v0.14.2
func (v DBCollectionKey) Type() CollectionType
func (DBCollectionKey) Validate ¶ added in v0.14.2
func (v DBCollectionKey) Validate() error
Validate returns error if not valid
type DatabaseDifferences ¶
type DatabaseDifferences struct {
ID string `json:"id"`
SchemasDiff SchemasDiff `json:"schemasDiff"`
}
DatabaseDifferences holds DB diffs
type DatasetDef ¶
type DatasetDef struct {
Recordsets []RecordsetDefinition `json:"recordsets"`
}
DatasetDef is a set of recordsets
type DatasetRefToRecordset ¶
type DatasetRefToRecordset struct {
MinRecordsCount int `json:"minRecordsCount:omitempty"`
MaxRecordsCount int `json:"maxRecordsCount:omitempty"`
}
DatasetRefToRecordset is a reference from dataset to recordset definition and settings specific for the dataset
type DbCatalog ¶
type DbCatalog struct {
DbCatalogBase
Schemas DbSchemas
}
DbCatalog hold info about DB database
type DbCatalogBase ¶
type DbCatalogBase struct {
ProjectItem
Driver string `json:"driver"`
Path string `json:"path,omitempty"` // for SQLite
DbModel string `json:"dbModel"`
}
DbCatalogBase defines base data for DB catalog
func (DbCatalogBase) Validate ¶
func (v DbCatalogBase) Validate() error
Validate returns error if not valid
type DbCatalogCounts ¶
type DbCatalogCounts struct {
Schemas int `json:"schemas"`
Tables int `json:"tables"`
Views int `json:"views"`
}
DbCatalogCounts hold numbers about DB
type DbCatalogSummary ¶
type DbCatalogSummary struct {
DbCatalogBase
Environments []string `json:"environments"`
NumberOf *DbCatalogCounts `json:"numberOf"`
}
DbCatalogSummary holds database summary
type DbCatalogs ¶
type DbCatalogs ProjectItems[*DbCatalog]
func (DbCatalogs) GetByID ¶ added in v0.16.0
func (v DbCatalogs) GetByID(id string) (t *DbCatalog)
func (DbCatalogs) GetTable ¶
func (v DbCatalogs) GetTable(catalog, schema, name string) *CollectionInfo
GetTable returns table
func (DbCatalogs) IDs ¶ added in v0.16.0
func (v DbCatalogs) IDs() []string
func (DbCatalogs) Validate ¶
func (v DbCatalogs) Validate() error
type DbCatalogsStore ¶ added in v0.16.0
type DbColumnProps ¶
type DbColumnProps struct {
Name string `json:"name"`
OrdinalPosition int `json:"ordinalPosition"`
PrimaryKeyPosition int `json:"pkPosition,omitempty"`
IsNullable bool `json:"isNullable"`
DbType string `json:"dbType"`
Default *string `json:"default,omitempty"`
CharMaxLength *int `json:"charMaxLength,omitempty"`
CharOctetLength *int `json:"charOctetLength,omitempty"`
DateTimePrecision *int `json:"dateTimePrecision,omitempty"`
CharacterSet *CharacterSet `json:"characterSet,omitempty"`
Collation *Collation `json:"collation,omitempty"`
}
DbColumnProps holds column metadata
func (DbColumnProps) Validate ¶
func (v DbColumnProps) Validate() error
Validate returns error if not valid
type DbModel ¶
type DbModel struct {
ProjectItem
Schemas SchemaModels `json:"schemas,omitempty"`
Environments DbModelEnvironments `json:"environments,omitempty"`
}
DbModel holds a model of a database
type DbModelDbCatalog ¶
type DbModelDbCatalog struct {
ID string `json:"id"`
}
DbModelDbCatalog holds DB model
func (DbModelDbCatalog) Validate ¶
func (v DbModelDbCatalog) Validate() error
Validate returns error if not valid
type DbModelDbCatalogs ¶
type DbModelDbCatalogs []*DbModelDbCatalog
DbModelDbCatalogs slice of *DbModelDbCatalog
func (DbModelDbCatalogs) GetByID ¶
func (v DbModelDbCatalogs) GetByID(id string) (dbModelDb *DbModelDbCatalog)
GetByID returns DbModelDbCatalog by GetID
func (DbModelDbCatalogs) Validate ¶
func (v DbModelDbCatalogs) Validate() error
Validate returns error if not valid
type DbModelEnv ¶
type DbModelEnv struct {
ID string `json:"id"` // environment ID
DbCatalogs DbModelDbCatalogs
}
DbModelEnv holds links from db model to environments
func (DbModelEnv) Validate ¶
func (v DbModelEnv) Validate() error
Validate returns error if not valid
type DbModelEnvironments ¶
type DbModelEnvironments []*DbModelEnv
DbModelEnvironments slice of *DbModelEnv
func (DbModelEnvironments) GetByID ¶
func (v DbModelEnvironments) GetByID(id string) *DbModelEnv
GetByID return *DbModelEnv by GetID
func (DbModelEnvironments) Validate ¶
func (v DbModelEnvironments) Validate() error
Validate returns error if not valid
type DbModelsStore ¶ added in v0.16.0
type DbModelsStore interface {
LoadDbModels(ctx context.Context, o ...StoreOption) (DbModels, error)
LoadDbModel(ctx context.Context, id string, o ...StoreOption) (*DbModel, error)
SaveDbModel(ctx context.Context, dbModel *DbModel) error
SaveDbModels(ctx context.Context, dbModels DbModels) error
DeleteDbModel(ctx context.Context, id string) error
}
type DbSchema ¶
type DbSchema struct {
ProjectItem
Tables []*CollectionInfo `json:"tables"`
Views []*CollectionInfo `json:"views"`
}
DbSchema represents a schema in a database
type DbSchemas ¶
type DbSchemas ProjectItems[*DbSchema]
DbSchemas is a slice of *DbSchema
type DbSchemasStore ¶ added in v0.16.0
type DiffDbRef ¶
type DiffDbRef struct {
Environment string `json:"env"`
Host string `json:"host"`
Port int `json:"port,omitempty"`
Catalog string `json:"catalog,omitempty"`
}
DiffDbRef is a link to DB
type EntitiesStore ¶ added in v0.15.7
type Entity ¶
type Entity struct {
ProjectItem
//ProjEntityBrief
ListOfTags
Fields EntityFields `json:"fields,omitempty" firestore:"fields,omitempty"`
Tables TableKeys `json:"tables,omitempty" firestore:"tables,omitempty"`
}
Entity hold full info about entity
type EntityField ¶
type EntityField struct {
ID string `json:"id" firestore:"id"`
Type string `json:"type" firestore:"type"`
Title string `json:"title,omitempty" firestore:"title,omitempty"`
IsKeyField bool `json:"isKeyField,omitempty" firestore:"isKeyField,omitempty"`
NamePatterns StringPatterns `json:"namePatterns" firestore:"namePattern"`
// Mappings holds declared physical columns this field maps to. Declared
// mappings are authoritative; when empty, a resolver may derive one from
// NamePatterns and must label it "inferred".
Mappings PhysicalRefs `json:"mappings,omitempty" firestore:"mappings,omitempty"`
}
EntityField hold info about entity field
func (EntityField) Validate ¶
func (v EntityField) Validate() error
Validate returns error if not valid
type EntityFieldRef ¶
EntityFieldRef holds reference to entity field
func (EntityFieldRef) Validate ¶
func (v EntityFieldRef) Validate() error
Validate returns error if not valid
type EntityFields ¶
type EntityFields []*EntityField
EntityFields is a slice of EntityField
func (EntityFields) Validate ¶
func (v EntityFields) Validate() error
Validate returns error if not valid
type EnvDb ¶
type EnvDb struct {
ProjectItem
DbModel string `json:"dbModel"`
Server ServerRef `json:"server"`
}
EnvDb hold info about DB in specific environment
type EnvDbCatalogStore ¶ added in v0.15.7
type EnvDbCatalogStore interface {
LoadEnvDbCatalogs(ctx context.Context, envID string, o ...StoreOption) (DbCatalogs, error)
LoadEnvDbCatalog(ctx context.Context, envID, serverID, catalogID string, o ...StoreOption) (DbCatalog, error)
SaveEnvDbCatalog(ctx context.Context, envID, serverID, catalogID string, catalogs *DbCatalog) error
SaveEnvDbCatalogs(ctx context.Context, envID, serverID, catalogID string, catalogs DbCatalogs) error
DeleteEnvDbCatalog(ctx context.Context, envID, serverID, catalogID string) error
}
type EnvDbDifference ¶
EnvDbDifference hold diffs for a DB in specific environment
type EnvDbServer ¶
EnvDbServer holds information about DB server in an environment
func (*EnvDbServer) GetID ¶ added in v0.15.7
func (v *EnvDbServer) GetID() string
func (*EnvDbServer) SetID ¶ added in v0.15.7
func (v *EnvDbServer) SetID(id string)
func (*EnvDbServer) Validate ¶
func (v *EnvDbServer) Validate() error
Validate returns error if no valid
type EnvDbServers ¶
type EnvDbServers []*EnvDbServer
EnvDbServers is a slice of *EnvDbServer
func (EnvDbServers) GetByServerRef ¶
func (v EnvDbServers) GetByServerRef(serverRef ServerRef) *EnvDbServer
GetByServerRef returns *EnvDbServer by GetID
func (EnvDbServers) Validate ¶
func (v EnvDbServers) Validate() error
Validate returns error of failed
type EnvDbServersStore ¶ added in v0.15.7
type EnvDbServersStore interface {
LoadEnvDbServers(ctx context.Context, envID string, o ...StoreOption) (EnvDbServers, error)
LoadEnvDbServer(ctx context.Context, envID, serverID string, o ...StoreOption) (*EnvDbServer, error)
SaveEnvDbServer(ctx context.Context, envID string, server *EnvDbServer) error
SaveEnvServers(ctx context.Context, envID string, servers EnvDbServers) error
DeleteEnvDbServer(ctx context.Context, envID, serverID string) error
}
type EnvState ¶
type EnvState struct {
Status string `json:"status"` // Possible values: exists, missing
Differences []EnvDbDifference `json:"differences,omitempty"`
}
EnvState hold state of env
type Environment ¶
type Environment struct {
ProjectItem
DbServers EnvDbServers `json:"dbServers"`
}
Environment holds information about environment
func (Environment) Validate ¶
func (v Environment) Validate() error
Validate returns error if failed
type EnvironmentFile ¶
type EnvironmentFile struct {
ID string `json:"id"`
}
EnvironmentFile some file to be documented
func (EnvironmentFile) Validate ¶
func (v EnvironmentFile) Validate() error
Validate returns error if not valid
type EnvironmentSummary ¶
type EnvironmentSummary struct {
ProjectItem
Servers EnvDbServers `json:"dbServers,omitempty"`
}
EnvironmentSummary holds environment summary
func (EnvironmentSummary) Validate ¶
func (v EnvironmentSummary) Validate() error
Validate returns error if not valid
type Environments ¶
type Environments ProjectItems[*Environment]
Environments is a slice of pointers to Environment
func (Environments) GetByID ¶ added in v0.16.0
func (v Environments) GetByID(id string) *Environment
func (Environments) IDs ¶ added in v0.16.0
func (v Environments) IDs() []string
func (Environments) Validate ¶
func (v Environments) Validate() error
Validate returns error if failed
type EnvironmentsStore ¶ added in v0.15.7
type EnvironmentsStore interface {
LoadEnvironments(ctx context.Context, o ...StoreOption) (Environments, error)
LoadEnvironment(ctx context.Context, id string, o ...StoreOption) (*Environment, error)
LoadEnvironmentSummary(ctx context.Context, id string) (*EnvironmentSummary, error)
SaveEnvironment(ctx context.Context, env *Environment) error
SaveEnvironments(ctx context.Context, envs Environments) error
DeleteEnvironment(ctx context.Context, id string) error
}
type Folder ¶
type Folder struct {
Name string `json:"name,omitempty" firestore:"name,omitempty"` // empty for root folders
Note string `json:"note,omitempty" firestore:"note,omitempty"`
// NumberOf keeps count of all successor objects in all sub-folders
NumberOf map[string]int `json:"numberOf,omitempty" firestore:"numberOf,omitempty"`
}
Folder keeps info about folder
type FolderBrief ¶
type FolderBrief struct {
Title string `json:"title" firestore:"title"`
}
FolderBrief holds brief about a folder item
func (FolderBrief) Validate ¶
func (v FolderBrief) Validate() error
Validate returns error if not valid
type FolderItem ¶
type FolderItem struct {
ID string `json:"id" firestore:"id"`
Title string `json:"title" firestore:"title"`
}
FolderItem holds info about a folder item
func (FolderItem) Validate ¶
func (v FolderItem) Validate() error
Validate returns error if not valid
type FoldersStore ¶ added in v0.15.7
type FoldersStore interface {
LoadFolders(ctx context.Context, o ...StoreOption) (Folders, error)
LoadFolder(ctx context.Context, id string, o ...StoreOption) (*Folder, error)
SaveFolder(ctx context.Context, path string, folder *Folder) error
SaveFolders(ctx context.Context, path string, folders Folders) error
DeleteFolder(ctx context.Context, id string) error
}
type ForeignKey ¶
type ForeignKey struct {
Name string `json:"name"`
Columns []string `json:"columns"`
RefTable DBCollectionKey `json:"refTable"`
MatchOption string `json:"matchOption,omitempty"` // Document what this?
UpdateRule string `json:"updateRule,omitempty"` // Document what this?
DeleteRule string `json:"deleteRule,omitempty"` // Document what this?
}
ForeignKey holds metadata about foreign key
func (ForeignKey) Validate ¶
func (v ForeignKey) Validate() error
Validate returns error if not valid
type ForeignKeys ¶
type ForeignKeys []*ForeignKey
ForeignKeys define list of foreighn keys
func (ForeignKeys) Validate ¶
func (v ForeignKeys) Validate() error
Validate returns error if not valid
type HTTPHeaderItem ¶
HTTPHeaderItem describes an HTTP header item
func (HTTPHeaderItem) Validate ¶
func (v HTTPHeaderItem) Validate() error
Validate returns error if not valid
type HTTPHeaders ¶
type HTTPHeaders []HTTPHeaderItem
HTTPHeaders is a []HTTPHeaderItem
func (HTTPHeaders) Validate ¶
func (v HTTPHeaders) Validate() error
Validate returns error if not valid
type HTTPRequest ¶
type HTTPRequest struct {
Method string `json:"method"`
URL string `json:"url"`
Protocol string `json:"protocol,omitempty"`
Headers HTTPHeaders `json:"headers,omitempty"`
TimeoutThresholdMs int `json:"timeoutThresholdMs,omitempty"` // in milliseconds
Parameters Parameters `json:"parameters,omitempty"`
Content string `json:"content,omitempty"`
}
HTTPRequest describes an HTTP request
func (HTTPRequest) Validate ¶
func (v HTTPRequest) Validate() error
Validate returns error if not valid
type HTTPWidgetDef ¶
type HTTPWidgetDef struct {
WidgetBase
Request HTTPRequest `json:"request"`
}
HTTPWidgetDef holds info about a widget that makes HTTP requests
func (HTTPWidgetDef) Validate ¶
func (v HTTPWidgetDef) Validate() error
Validate returns error if not valid
type HideRecordsetColIf ¶
type HideRecordsetColIf struct {
Parameters []string `json:"parameters,omitempty"`
}
HideRecordsetColIf defines recordset col if
func (HideRecordsetColIf) Validate ¶
func (v HideRecordsetColIf) Validate() error
Validate returns error if not valid
type HitAndMiss ¶
type HitAndMiss struct {
IsInModel bool `json:"isInModel"`
ExistsIn []DiffDbRef `json:"existsIn"` // points to DatabaseDifferences.DatabaseDiffs[]DatabaseDiff.GetID
MissingIn []DiffDbRef `json:"missingIn"`
}
HitAndMiss stores where entity exists and where not
type IProjectItem ¶ added in v0.16.0
type IProjectItem interface {
GetID() string
GetProjectItem() ProjectItem
Validate() error
}
type IProjectItems ¶ added in v0.16.0
type IProjectItems[T IProjectItem] interface { IDs() []string GetByID(id string) (t T) Validate() error }
type IncompleteQueryRecordError ¶ added in v0.28.0
type IncompleteQueryRecordError struct {
FolderPath string
ID string
Reason string
Revision QueryRevision
Query QueryDefWithFolderPath
}
IncompleteQueryRecordError reports that RevisionedQueriesStore.LoadQueryRevision found only part of a query's committed pair - the JSON metadata file without its expected body sidecar, or a body sidecar without its JSON metadata file. It is returned only by the strict revisioned load; the tolerant QueriesStore.LoadQuery keeps treating a missing body sidecar as an empty body.
It carries what a caller needs to act on this location rather than being permanently locked out of it: Revision, computed over exactly what is currently persisted, is the exact value PutQuery's IfMatch or DeleteQueryRevision's expected revision must supply to replace (which completes it) or remove this record - a fabricated or stale value still conflicts, exactly as it would for a complete record. Query is the partial record as read from disk (Text always empty, since no body sidecar exists), so a caller can inspect or adopt what is already there instead of only learning that something incomplete exists.
func (*IncompleteQueryRecordError) Error ¶ added in v0.28.0
func (e *IncompleteQueryRecordError) Error() string
func (*IncompleteQueryRecordError) Unwrap ¶ added in v0.28.0
func (e *IncompleteQueryRecordError) Unwrap() error
Unwrap makes errors.Is(err, ErrIncompleteQueryRecord) true for every *IncompleteQueryRecordError.
type Index ¶
type Index struct {
Name string `json:"name"`
Type string `json:"type"`
Origin string `json:"origin,omitempty"` // Used by SQLite
Columns []*IndexColumn `json:"columns"`
IsClustered bool `json:"clustered,omitempty"`
IsXML bool `json:"xml,omitempty"`
IsColumnStore bool `json:"columnstore,omitempty"`
IsHash bool `json:"hash,omitempty"`
IsUnique bool `json:"unique,omitempty"`
IsUniqueConstraint bool `json:"uniqueConstraint,omitempty"`
IsPrimaryKey bool `json:"primaryKey,omitempty"`
IsPartial bool `json:"partial,omitempty"`
}
Index holds info about DB table index
type IndexColumn ¶
type IndexColumn struct {
Name string `json:"name"`
IsDescending bool `json:"descending,omitempty"`
IsIncludedColumn bool `json:"included,omitempty"`
}
IndexColumn holds info about a col in a DB table index
type InvalidQueryLocationError ¶ added in v0.28.0
InvalidQueryLocationError reports that a query's folder path or ID failed the safety checks a RevisionedQueriesStore write enforces before any I/O: an absolute path, a path-traversal or hidden ("."-prefixed) segment, a path separator or NUL byte inside a single ID/folder segment, an attempt to escape the project's queries root, or a symlink/non-directory found while resolving the location.
func (*InvalidQueryLocationError) Error ¶ added in v0.28.0
func (e *InvalidQueryLocationError) Error() string
func (*InvalidQueryLocationError) Unwrap ¶ added in v0.28.0
func (e *InvalidQueryLocationError) Unwrap() error
Unwrap makes errors.Is(err, ErrInvalidQueryLocation) true for every *InvalidQueryLocationError.
type Issues ¶
type Issues struct {
Schema []string `json:"schema,omitempty"`
}
Issues TODO: document what it is for
type ListOfTags ¶
type ListOfTags struct {
Tags []string `json:"tags,omitempty" firestore:"tags,omitempty"`
}
ListOfTags mixing
type OptionsValueCheck ¶
type OptionsValueCheck struct {
Type string `json:"type"`
Options []interface{} `json:"options"`
}
OptionsValueCheck test value is matching one of the available options
func (OptionsValueCheck) Validate ¶
func (v OptionsValueCheck) Validate() error
Validate returns error if not valid
type Parameter ¶
type Parameter struct {
ID string `json:"id"`
Type string `json:"type"`
Value interface{} `json:"value"`
}
Parameter defines parameter
type ParameterDef ¶
type ParameterDef struct {
ID string `json:"id"`
Type string `json:"type"`
Title string `json:"title,omitempty"`
DefaultValue interface{} `json:"defaultValue,omitempty"`
IsRequired bool `json:"isRequired,omitempty"`
IsMultiValue bool `json:"isMultiValue,omitempty"`
MaxLength int `json:"maxLength,omitempty"`
MinLength int `json:"minLength,omitempty"`
Meta *EntityFieldRef `json:"meta,omitempty"`
Lookup *ParameterLookup `json:"lookup,omitempty"`
}
ParameterDef defines input parameter for a board, widget, etc.
func (ParameterDef) Validate ¶
func (v ParameterDef) Validate() error
Validate returns error if failed
type ParameterLookup ¶
type ParameterLookup struct {
DB string `json:"db" firestore:"db"`
SQL string `json:"sql" firestore:"sql"`
KeyFields []string `json:"keyFields" firestore:"keyFields"`
}
ParameterLookup holds definition for parameter lookup
type PhysicalRef ¶ added in v0.17.0
type PhysicalRef struct {
Source string `json:"source" firestore:"source"`
Collection string `json:"collection" firestore:"collection"`
Column string `json:"column" firestore:"column"`
}
PhysicalRef references a physical column an entity field maps to.
func (PhysicalRef) Validate ¶ added in v0.17.0
func (v PhysicalRef) Validate() error
Validate returns error if not valid
type PhysicalRefs ¶ added in v0.17.0
type PhysicalRefs []PhysicalRef
PhysicalRefs is a slice of PhysicalRef
func (PhysicalRefs) Validate ¶ added in v0.17.0
func (v PhysicalRefs) Validate() error
Validate returns error if not valid: every ref must be valid and, since a field can only mean one thing per table, unique per source+collection.
type ProjBoardBrief ¶
type ProjBoardBrief struct {
ProjItemBrief
Parameters Parameters `json:"parameters,omitempty" firestore:"parameters,omitempty"`
// TODO: Document why and how to use, add tests
RequiredParams [][]string `json:"requiredParams,omitempty" firestore:"requiredParams,omitempty"`
}
ProjBoardBrief defines brief information of Board
func (ProjBoardBrief) Validate ¶
func (v ProjBoardBrief) Validate() error
type ProjDbDriver ¶ added in v0.16.0
type ProjDbDriver struct {
ProjectItem
Servers ProjDbServers `json:"servers"`
}
func (ProjDbDriver) Validate ¶ added in v0.16.0
func (v ProjDbDriver) Validate() error
type ProjDbDrivers ¶ added in v0.16.0
type ProjDbDrivers []*ProjDbDriver
func (ProjDbDrivers) GetByID ¶ added in v0.16.0
func (p ProjDbDrivers) GetByID(id string) *ProjDbDriver
func (ProjDbDrivers) IDs ¶ added in v0.16.0
func (p ProjDbDrivers) IDs() []string
func (ProjDbDrivers) Validate ¶ added in v0.16.0
func (p ProjDbDrivers) Validate() error
type ProjDbDriversStore ¶ added in v0.16.0
type ProjDbDriversStore interface {
LoadProjDbDrivers(ctx context.Context, o ...StoreOption) (ProjDbDrivers, error)
LoadProjDbDriver(ctx context.Context, id string, o ...StoreOption) (*ProjDbDriver, error)
SaveProjDbDriver(ctx context.Context, dbDriver *ProjDbDriver, o ...StoreOption) error
DeleteProjDbDriver(ctx context.Context, id string) error
DbServersStore(dbDriver string) ProjDbServersStore
}
type ProjDbModelBrief ¶
type ProjDbModelBrief struct {
ProjectItem
NumberOf ProjDbModelNumbers `json:"numberOf"`
}
ProjDbModelBrief hold env brief in project summary
type ProjDbModelNumbers ¶
type ProjDbModelNumbers struct {
Schemas int `json:"schemas"`
Tables int `json:"tables"`
Views int `json:"views"`
}
ProjDbModelNumbers holds numbers for a dbmodel
type ProjDbServer ¶
type ProjDbServer struct {
ProjectItem
Server ServerRef `json:"server"`
Catalogs DbCatalogs `json:"catalogs"`
}
ProjDbServer holds info about a project DB server - NOT sure if right way
func (ProjDbServer) Validate ¶
func (v ProjDbServer) Validate() error
Validate returns error if not valid
type ProjDbServerFile ¶
type ProjDbServerFile struct {
ServerRef
Catalogs []string `jsont:"catalogs,omitempty" firestore:"catalogs,omitempty"`
}
ProjDbServerFile stores summary info about ServerRef
func (ProjDbServerFile) Validate ¶
func (v ProjDbServerFile) Validate() error
Validate returns error if not valid
type ProjDbServerSummary ¶
type ProjDbServerSummary struct {
ProjectItem
DbServer ServerRef `json:"dbServer"`
Catalogs []*DbCatalogSummary `json:"databases,omitempty"`
}
ProjDbServerSummary holds summary info about DB server
type ProjDbServers ¶
type ProjDbServers ProjectItems[*ProjDbServer]
ProjDbServers slice of ProjDbServer which holds ServerRef and DbCatalogs
func (ProjDbServers) GetProjDbServer ¶
func (v ProjDbServers) GetProjDbServer(ref ServerRef) *ProjDbServer
GetProjDbServer returns db servers
func (ProjDbServers) Validate ¶
func (v ProjDbServers) Validate() error
Validate returns error if not valid
type ProjDbServersStore ¶ added in v0.15.7
type ProjDbServersStore interface {
DriverID() string
CatalogsStore(serverRef ServerRef) DbCatalogsStore
LoadProjDbServers(ctx context.Context, o ...StoreOption) (ProjDbServers, error)
LoadProjDbServer(ctx context.Context, serverID string, o ...StoreOption) (*ProjDbServer, error)
SaveProjDbServer(ctx context.Context, server *ProjDbServer, o ...StoreOption) error
DeleteProjDbServer(ctx context.Context, serverID string) error
}
type ProjEntityBrief ¶
type ProjEntityBrief struct {
ProjItemBrief
}
ProjEntityBrief hold brief info about entity in project file
type ProjEnvBrief ¶
type ProjEnvBrief struct {
ProjectItem
}
ProjEnvBrief hold env brief in project summary
type ProjEnvNumbers ¶
ProjEnvNumbers hold some numbers for environment
type ProjItemBrief ¶
type ProjItemBrief struct {
ID string `json:"id,omitempty" firestore:"id,omitempty" yaml:"id,omitempty"`
Title string `json:"title,omitempty" firestore:"title,omitempty" yaml:"title,omitempty"`
// Document what is Folder? should it be moved somewhere?
Folder string `json:"folder,omitempty" firestore:"folder,omitempty" yaml:"folder,omitempty"` // TODO: document purpose and usage
ListOfTags
}
ProjItemBrief hold a brief about a project item
func (*ProjItemBrief) GetID ¶ added in v0.15.0
func (v *ProjItemBrief) GetID() string
func (*ProjItemBrief) SetID ¶ added in v0.15.0
func (v *ProjItemBrief) SetID(id string)
func (*ProjItemBrief) ValidateWithOptions ¶ added in v0.16.0
func (v *ProjItemBrief) ValidateWithOptions(isTitleRequired bool) error
ValidateWithOptions returns error if not valid
type Project ¶
type Project struct {
ProjectItem
Created *ProjectCreated `json:"created,omitempty" firestore:"created,omitempty"`
Boards Boards `json:"boards,omitempty" firestore:"boards,omitempty"`
Queries *QueriesFolder `json:"queries,omitempty" firestore:"queries,omitempty"`
Entities Entities `json:"entities,omitempty" firestore:"entities,omitempty"`
// Use GetEnvironments to get the latest
Environments Environments `json:"environments,omitempty" firestore:"environments,omitempty"`
DbModels DbModels `json:"dbModels,omitempty" firestore:"dbModels,omitempty"`
DbDrivers ProjDbDrivers `json:"dbDrivers,omitempty" firestore:"dbDrivers,omitempty"`
Actions Actions `json:"actions,omitempty" firestore:"actions,omitempty"`
Repository *ProjectRepository `json:"repository,omitempty" firestore:"repository,omitempty"`
// contains filtered or unexported fields
}
Project holds info about a project
func NewProjectWithStore ¶ added in v0.16.5
func NewProjectWithStore(id string, store ProjectStore) (p *Project)
func NewProjectWithStoreFactory ¶ added in v0.16.5
func NewProjectWithStoreFactory(id string, newStore func(p *Project) ProjectStore) (p *Project)
func (*Project) AddProjDbServer ¶ added in v0.16.2
func (p *Project) AddProjDbServer(ctx context.Context, dbServer *ProjDbServer) (err error)
func (*Project) GetDBs ¶ added in v0.16.0
func (p *Project) GetDBs(ctx context.Context, o ...StoreOption) (dbs ProjDbDrivers, err error)
func (*Project) GetEnvironments ¶ added in v0.12.1
func (p *Project) GetEnvironments(ctx context.Context) (environments Environments, err error)
func (*Project) GetProjDbServer ¶ added in v0.16.2
type ProjectBrief ¶
type ProjectBrief struct {
Access string `json:"access" firestore:"access"` // e.g. private, protected, public
ProjectItem
Repository *ProjectRepository `json:"repository,omitempty" firestore:"repository,omitempty"`
}
ProjectBrief hold project brief info (e.g. for list)
func (*ProjectBrief) Validate ¶
func (v *ProjectBrief) Validate() error
Validate returns error if not valid
type ProjectCreated ¶
type ProjectCreated struct {
//ByName string `json:"byName,omitempty"`
//ByUsername string `json:"byUsername,omitempty"`
At time.Time `json:"at" firestore:"at"`
}
ProjectCreated hold info about when and who created
type ProjectFile ¶
type ProjectFile struct {
Created *ProjectCreated `json:"created,omitempty" firestore:"created,omitempty"`
ProjectItem
Repository *ProjectRepository `json:"repository,omitempty" firestore:"repository,omitempty"`
}
ProjectFile defines what to storage to project file
func (ProjectFile) Validate ¶
func (v ProjectFile) Validate() error
Validate returns error if not valid
type ProjectItem ¶
type ProjectItem struct {
ProjItemBrief
UserIDs []string `json:"userIds,omitempty" firestore:"userIds,omitempty"`
Access string `json:"access,omitempty" firestore:"access,omitempty"` // e.g. "private", "protected", "public"
}
ProjectItem base class with GetID and Name
func (ProjectItem) GetProjectItem ¶ added in v0.16.0
func (v ProjectItem) GetProjectItem() ProjectItem
func (ProjectItem) ValidateWithOptions ¶ added in v0.16.0
func (v ProjectItem) ValidateWithOptions(isTitleRequired bool) error
ValidateWithOptions returns error if not valid
type ProjectItems ¶ added in v0.16.0
type ProjectItems[T IProjectItem] []T
func (ProjectItems[T]) GetByID ¶ added in v0.16.0
func (v ProjectItems[T]) GetByID(id string) (t T)
func (ProjectItems[T]) IDs ¶ added in v0.16.0
func (v ProjectItems[T]) IDs() (ids []string)
IDs returns slice of IDs of db models
func (ProjectItems[T]) Validate ¶ added in v0.16.0
func (v ProjectItems[T]) Validate() error
type ProjectLoader ¶ added in v0.12.1
type ProjectRepository ¶
type ProjectRepository struct {
Type string `json:"type"` // e.g. "git"
WebURL string `json:"webURL"`
ProjectID string `json:"projectId,omitempty"`
}
ProjectRepository defines project repository
func (*ProjectRepository) Validate ¶
func (v *ProjectRepository) Validate() error
Validate returns error if not valid
type ProjectStore ¶ added in v0.15.0
type ProjectStore interface {
ProjectID() string
LoadProjectFile(ctx context.Context) (ProjectFile, error)
//LoadProjectSummary(ctx context.Context) (ProjectSummary, error)
LoadProject(ctx context.Context, o ...StoreOption) (p *Project, err error)
SaveProject(ctx context.Context, p *Project) error
QueriesStore
BoardsStore
FoldersStore
EntitiesStore
EnvironmentsStore
EnvDbServersStore
EnvDbCatalogStore
ProjDbDriversStore
RecordsetDefinitionsStore
}
type ProjectSummary ¶
type ProjectSummary struct {
ProjectFile
Entities []*ProjEntityBrief `json:"entities,omitempty" firestore:"entities,omitempty"`
}
ProjectSummary hold project summary - this is to be used in Firestore to minimize reads Locally we'd produce it from ProjectFile and shallow scan of nested dirs.
type ProjectVisibility ¶ added in v0.15.11
type ProjectVisibility int
const ( PublicProject ProjectVisibility = iota PrivateProject )
func (ProjectVisibility) Validate ¶ added in v0.15.11
func (v ProjectVisibility) Validate() error
type ProjectsStore ¶ added in v0.15.11
type ProjectsStore interface {
CreateNewProject(ctx context.Context, id, title string, visibility ProjectVisibility, report StatusReporter) (project *Project, err error)
}
type PropertyDiff ¶
type PropertyDiff struct {
Name string `json:"name"`
HitAndMiss
}
PropertyDiff holds diffs about some property
type QueriesFolder ¶ added in v0.16.0
type QueriesFolder struct {
ProjectItem
Folders QueryFolders `json:"folders,omitempty" yaml:"folders,omitempty"`
Items QueryDefs `json:"items,omitempty" yaml:"items,omitempty"`
}
QueriesFolder defines folder
func (QueriesFolder) Validate ¶ added in v0.16.0
func (v QueriesFolder) Validate() error
Validate returns error if not valid
type QueriesStore ¶ added in v0.15.7
type QueriesStore interface {
LoadQueries(ctx context.Context, folderPath string, o ...StoreOption) (folder *QueriesFolder, err error)
LoadQuery(ctx context.Context, id string, o ...StoreOption) (*QueryDef, error)
SaveQuery(ctx context.Context, query *QueryDefWithFolderPath) error
DeleteQuery(ctx context.Context, id string) error
}
type QueryCapture ¶ added in v0.28.1
type QueryCapture struct {
// Author is the serving principal the capture was saved under, set by
// the server, never by the client. Empty when the server ran with no
// identified principal.
Author string `json:"author,omitempty" yaml:"author,omitempty"`
// Environment is the environment the captured lookup ran in.
Environment string `json:"environment" yaml:"environment"`
// Source is the stable project-local source ID (api-contract.md
// SourceRef.source) the captured lookup read.
Source string `json:"source" yaml:"source"`
// Collection is the collection the captured query reads, derived by the
// server from the query itself.
Collection string `json:"collection,omitempty" yaml:"collection,omitempty"`
// Bindings records how each parameter was bound during capture.
Bindings []QueryCaptureBinding `json:"bindings,omitempty" yaml:"bindings,omitempty"`
}
QueryCapture records where a query captured from exploration came from, persisted inside the query's own "<id>.query.json" so the provenance travels with the query through git. Hub datatug/datatug executable-knowledge-library REQ:capture-from-exploration: "Query author, purpose and source/binding provenance are inspectable."
It carries identifiers only - never a bound value, a result row or a credential.
func (QueryCapture) Validate ¶ added in v0.28.1
func (v QueryCapture) Validate() error
Validate returns an error if the capture provenance is incomplete: an environment and a source are required, and every binding must name a parameter, at most once, with one of the capture origins. A capture is persisted inside the git-tracked "<id>.query.json", so every string it records is screened for credential material too - by shape, for the reasons given above.
type QueryCaptureBinding ¶ added in v0.28.1
type QueryCaptureBinding struct {
ParameterID string `json:"parameterId" yaml:"parameterId"`
Origin string `json:"origin" yaml:"origin"` // selection | context | manual
}
QueryCaptureBinding is one parameter's capture-time binding origin.
type QueryDef ¶
type QueryDef struct {
ProjectItem
Type QueryType `json:"type"` // Possible value: folder, DDL, GraphQL, HTTP, etc.
Text string `json:"text,omitempty" yaml:"text,omitempty"`
Draft bool `json:"draft,omitempty" yaml:"draft,omitempty"`
Parameters Parameters `json:"parameters,omitempty" yaml:"parameters,omitempty"`
Targets []QueryDefTarget `json:"targets,omitempty" yaml:"targets,omitempty"`
// User might want to now what set of cols is returned even before hitting the RUN button.
Recordsets []RecordsetDefinition `json:"recordsets,omitempty" yaml:"recordsets,omitempty"`
// Purpose says what question the query answers, in the author's words
// (executable-knowledge-library REQ:capture-from-exploration).
Purpose string `json:"purpose,omitempty" yaml:"purpose,omitempty"`
// Capture is the provenance of a query captured from exploration; nil
// for a query authored any other way. See QueryCapture.
Capture *QueryCapture `json:"capture,omitempty" yaml:"capture,omitempty"`
}
QueryDef holds query data For HTTP request host, port, etc, are stored in Targets property,
func (QueryDef) Validate ¶
Validate returns error if not valid. A QueryDef is persisted to git-tracked project files, so besides its structure every string it persists is screened for credential material - by meaning (EmbeddedCredentialReason, query_credentials.go) where the value is free text, and by shape (identifierShapeReason, query_storage_screen.go) where it names something. The fields with a bespoke refusal message are screened inline below - the title, the purpose, the text whatever the query type, every target and every parameter default; the rest are swept by screenQueryDefForStorage, whose doc comment tables every persisted string and the screen it gets. Every save path validates through here. A query captured from exploration is additionally checked for complete, consistent provenance (QueryCapture.validateCaptureAgainst, query_capture.go).
type QueryDefBrief ¶
type QueryDefBrief struct {
ProjItemBrief
Type string `json:"type"` // Possible value: folder, DDL, GraphQL, etc.
Draft bool `json:"draft,omitempty" yaml:"draft,omitempty"`
}
func (QueryDefBrief) Validate ¶
func (v QueryDefBrief) Validate() error
type QueryDefTarget ¶
type QueryDefTarget struct {
Driver string `json:"driver,omitempty" yaml:"driver,omitempty"`
Catalog string `json:"catalog,omitempty" yaml:"catalog,omitempty"`
Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"`
Host string `json:"host,omitempty" yaml:"host,omitempty"`
Port int `json:"port,omitempty" yaml:"port,omitempty"`
Credentials
}
QueryDefTarget defines target of query
func (QueryDefTarget) Validate ¶ added in v0.17.0
func (v QueryDefTarget) Validate() error
Validate returns error if not valid. QueryDefTarget is persisted to git-tracked project files, so it must never carry credential material: a non-empty password, or a secret embedded in any of its connection-string-like fields (driver, catalog, protocol, host, and the username itself) in any syntax EmbeddedCredentialReason recognizes (query_credentials.go). A username alone is allowed.
type QueryDefWithFolderPath ¶
QueryDefWithFolderPath adds folder path to query definition
func (QueryDefWithFolderPath) Validate ¶
func (v QueryDefWithFolderPath) Validate() error
Validate returns error if not valid
type QueryFolderBrief ¶
type QueryFolderBrief struct {
ProjItemBrief
Folders []*QueryFolderBrief `json:"folders,omitempty" yaml:"folders,omitempty"`
Items []*QueryDefBrief `json:"items,omitempty" yaml:"items,omitempty"`
}
QueryFolderBrief defines brief for queries folder
func (QueryFolderBrief) Validate ¶
func (v QueryFolderBrief) Validate() error
Validate returns error if not valid
type QueryFolders ¶
type QueryFolders []*QueriesFolder
QueryFolders defines slice
func (QueryFolders) Validate ¶
func (v QueryFolders) Validate() error
Validate returns error if not valid
type QueryResult ¶
type QueryResult struct {
Created time.Time `json:"created"`
EnvironmentID string `json:"env"`
Driver string `json:"driver"`
Target string `json:"target"`
Recordsets []Recordset `json:"recordset,omitempty"`
}
QueryResult holds results of a query execution
func (QueryResult) Validate ¶
func (v QueryResult) Validate() error
Validate returns error if not valid
type QueryRevision ¶ added in v0.28.0
type QueryRevision string
QueryRevision identifies one persisted state of a query's on-disk pair ("<id>.query.json" + its body sidecar, see pkg/datatug/doc.go). It is derived from the exact bytes a store persisted - metadata bytes, the body sidecar's type-derived extension and exact body bytes - so any change to either file, including one made outside the revisioned API (a hand edit, another process), produces a different revision and invalidates a writer holding the old one. It never depends on how a caller spelled the id to find the pair, so a record read through two spellings a file system resolves to the same files (e.g. letter case on macOS/Windows) has one revision. It carries no meaning beyond equality comparison: callers must not parse it or assume any ordering.
type QueryRevisionConflictError ¶ added in v0.28.0
type QueryRevisionConflictError struct {
FolderPath string
ID string
Expected QueryRevision // the revision the caller supplied, "" for an IfNoneMatch create
Actual QueryRevision // the record's current revision, "" if it does not exist
Reason string
}
QueryRevisionConflictError reports that a RevisionedQueriesStore.PutQuery or DeleteQueryRevision precondition was not met: an IfNoneMatch create found an existing record, or an IfMatch/expected revision did not equal the record's current revision (including because the record does not exist, reported with Actual == ""). No persisted file was changed.
func (*QueryRevisionConflictError) Error ¶ added in v0.28.0
func (e *QueryRevisionConflictError) Error() string
func (*QueryRevisionConflictError) Unwrap ¶ added in v0.28.0
func (e *QueryRevisionConflictError) Unwrap() error
Unwrap makes errors.Is(err, ErrQueryRevisionConflict) true for every *QueryRevisionConflictError.
type QueryWriteCondition ¶ added in v0.28.0
type QueryWriteCondition struct {
IfNoneMatch bool
IfMatch QueryRevision
}
QueryWriteCondition is the optimistic-concurrency precondition a RevisionedQueriesStore.PutQuery call must supply: exactly one of IfNoneMatch (create - succeed only when no record currently exists) or IfMatch (update - succeed only when the current record's revision equals this value). Supplying both, or neither, is a caller error that PutQuery rejects before touching the file system.
type ReadmeEncoder ¶
type ReadmeEncoder interface {
ProjectSummaryToReadme(w io.Writer, project Project) error
DbServerToReadme(w io.Writer, repository *ProjectRepository, dbServer ProjDbServer) error
TableToReadme(w io.Writer, repository *ProjectRepository, catalog string, table *CollectionInfo, dbServer ProjDbServer) error
DbCatalogToReadme(w io.Writer, repository *ProjectRepository, dbServer ProjDbServer, catalog DbCatalog) error
}
ReadmeEncoder defines an interface for encoder implementation that writes to MD files
type Recordset ¶
type Recordset struct {
Duration time.Duration `json:"durationNanoseconds"`
Columns []RecordsetColumn `json:"columns"`
Rows [][]interface{} `json:"rows"`
}
Recordset holds data & stats for recordset returned by executed command
type RecordsetBaseDef ¶
type RecordsetBaseDef struct {
PrimaryKey *UniqueKey `json:"primaryKey,omitempty"`
ForeignKeys ForeignKeys `json:"foreignKeys,omitempty"`
AlternateKeys []UniqueKey `json:"alternateKey,omitempty"`
ActiveIssues *Issues `json:"issues,omitempty"`
}
RecordsetBaseDef is used by: CollectionInfo, RecordsetDefinition
type RecordsetColumn ¶
type RecordsetColumn struct {
Name string `json:"name"`
DbType string `json:"dbType"`
Meta *EntityFieldRef `json:"meta"`
}
RecordsetColumn describes column in a recordset
func (RecordsetColumn) Validate ¶
func (v RecordsetColumn) Validate() error
Validate returns error if not valid
type RecordsetColumnDef ¶
type RecordsetColumnDef struct {
Name string `json:"name"`
Type string `json:"type"`
Required bool `json:"required,omitempty"`
Meta *EntityFieldRef `json:"meta,omitempty"`
HideIf HideRecordsetColIf `json:"hideIf,omitempty"`
}
RecordsetColumnDef defines a column of a recordset
func (RecordsetColumnDef) Validate ¶
func (v RecordsetColumnDef) Validate() error
Validate returns error if not valid
type RecordsetColumnDefs ¶
type RecordsetColumnDefs []RecordsetColumnDef
RecordsetColumnDefs is a slice of RecordsetColumnDef
func (RecordsetColumnDefs) HasColumn ¶
func (v RecordsetColumnDefs) HasColumn(name string, caseSensitive bool) bool
HasColumn checks if set of columns has a column with a given name
func (RecordsetColumnDefs) Validate ¶
func (v RecordsetColumnDefs) Validate() error
Validate returns error if not valid
type RecordsetDefinition ¶
type RecordsetDefinition struct {
ProjectItem
RecordsetBaseDef
Columns RecordsetColumnDefs `json:"columns,omitempty" yaml:"columns,omitempty"`
// -- formatting spacer --
Type string `json:"type" yaml:"type,omitempty"` // Supported types: "recordset", "json"
JSONSchema string `json:"jsonSchema,omitempty" yaml:"jsonSchema,omitempty"`
Files []string `json:"files,omitempty" yaml:"files,omitempty"`
Errors []string `json:"errors,omitempty"`
}
RecordsetDefinition describes dataset
func (RecordsetDefinition) Validate ¶
func (v RecordsetDefinition) Validate() error
Validate returns error if not valid
type RecordsetDefinitions ¶ added in v0.15.7
type RecordsetDefinitions []*RecordsetDefinition
type RecordsetDefinitionsStore ¶ added in v0.15.7
type RecordsetDefinitionsStore interface {
LoadRecordsetDefinitions(ctx context.Context, o ...StoreOption) ([]*RecordsetDefinition, error)
LoadRecordsetDefinition(ctx context.Context, id string, o ...StoreOption) (*RecordsetDefinition, error)
LoadRecordsetData(ctx context.Context, id string) (Recordset, error)
}
type RefByForeignKey ¶
type RefByForeignKey struct {
Name string `json:"name"`
Columns []string `json:"columns"`
MatchOption string `json:"matchOption,omitempty"`
UpdateRule string `json:"updateRule,omitempty"`
DeleteRule string `json:"deleteRule,omitempty"`
}
RefByForeignKey holds metadata about reference by FK
type ReferencedBy ¶ added in v0.16.0
type ReferencedBy struct {
DBCollectionKey
ForeignKeys []*RefByForeignKey `json:"foreignKeys"`
}
ReferencedBy holds metadata about table/view that reference a table/view
type ReferencedBys ¶ added in v0.16.0
type ReferencedBys []*ReferencedBy
ReferencedBys defines slice
func (ReferencedBys) Validate ¶ added in v0.16.0
func (v ReferencedBys) Validate() error
Validate returns error if not valid
type RegexpValueCheck ¶
type RegexpValueCheck struct {
Regexp string `json:"regexp"`
}
RegexpValueCheck test value with regular expression
func (RegexpValueCheck) Validate ¶
func (v RegexpValueCheck) Validate() error
Validate returns error if not valid
type RepoRootFile ¶ added in v0.15.11
type RepoRootFile struct {
// List of paths to DataTug projects
Projects []string `json:"projects,omitempty" yaml:"projects,omitempty"`
}
type RevisionedQueriesStore ¶ added in v0.28.0
type RevisionedQueriesStore interface {
// LoadQueryRevision loads the query at id (a "<folder>/.../<id>" path,
// like QueriesStore.LoadQuery) together with the revision of the exact
// bytes it was read from. Unlike the tolerant QueriesStore.LoadQuery, it
// rejects an incomplete committed pair (IncompleteQueryRecordError)
// rather than silently treating a missing body sidecar as an empty body.
LoadQueryRevision(ctx context.Context, id string, o ...StoreOption) (*StoredQuery, error)
// PutQuery creates or updates a query under condition. condition must set
// exactly one of IfNoneMatch or IfMatch; a request that sets neither or
// both fails validation before any I/O. On success it returns the stored
// query and its new revision. A failed precondition - the query already
// exists for IfNoneMatch, or the current revision does not equal IfMatch
// (including because the record does not exist) - returns a
// QueryRevisionConflictError and leaves every persisted file unchanged.
PutQuery(ctx context.Context, query *QueryDefWithFolderPath, condition QueryWriteCondition) (*StoredQuery, error)
// DeleteQueryRevision deletes the query at id only when its current
// revision equals expected. A stale or missing revision returns a
// QueryRevisionConflictError and leaves every persisted file unchanged.
DeleteQueryRevision(ctx context.Context, id string, expected QueryRevision) error
}
RevisionedQueriesStore extends QueriesStore with optimistic-concurrency operations for capturing a query as a project asset: create-only, update-if-unchanged and delete-if-unchanged. It is additive - every QueriesStore implementation may add it without breaking source compatibility with existing callers of the plain interface.
Implementations must persist QueryDefWithFolderPath.QueryDef.Text and its JSON metadata as one recoverable logical transaction (see pkg/storage/filestore's query transaction helpers): participating readers never observe a mix of an old and a new revision's bytes, and an interrupted write leaves either the previous complete revision or the new complete revision on disk, never a torn pair.
type SQLCheck ¶
type SQLCheck struct {
Query string `json:"query"`
}
SQLCheck holds and DDL that verifies data
type SQLWidgetDef ¶
type SQLWidgetDef struct {
WidgetBase
SQL SQLWidgetSettings `json:"sql"`
}
SQLWidgetDef holds info about a widget that makes SQL queries
func (*SQLWidgetDef) Validate ¶
func (v *SQLWidgetDef) Validate() error
Validate returns error if not valid
type SQLWidgetSettings ¶
type SQLWidgetSettings struct {
// QueryID references a QueryDef by id within the same project.
QueryID string `json:"queryId"`
// Parameters binds the referenced query's parameters.
Parameters WidgetParameterBindings `json:"parameters,omitempty"`
}
SQLWidgetSettings binds a SQL widget to a query in the project's query library. It deliberately carries no query text and no execution target of its own: the text and the target come from the referenced QueryDef, and the environment is the viewer's choice at view time. Founder ruling 2026-09-09 ("I'm Ok with the suggested option 1"). The field shape below is the coding agent's design, not the founder's.
func (SQLWidgetSettings) Validate ¶
func (v SQLWidgetSettings) Validate() error
Validate returns error if not valid
type Schema ¶ added in v0.16.0
type Schema struct {
ProjectItem
Tables TableModels `json:"tables"`
Views TableModels `json:"views"`
}
Schema holds model for a DB schema
type SchemaDiff ¶
type SchemaDiff struct {
HitAndMiss
TablesDiff TablesDiff `json:"tablesDiff"`
ViewsDiff TablesDiff `json:"viewsDiff"`
}
SchemaDiff holds schema diffs
type SchemaModels ¶
type SchemaModels []*Schema
SchemaModels is a slice of *Schema
func (SchemaModels) GetByID ¶
func (v SchemaModels) GetByID(id string) (schemaModel *Schema)
GetByID return *Schema by GetID
type ServerRef ¶ added in v0.16.0
type ServerRef struct {
Driver string `json:"driver"`
Host string `json:"host,omitempty"`
Path string `json:"path,omitempty"` // A path to a folder with database files - to be used by SQLite, for example.
Port int `json:"port,omitempty"`
}
ServerRef hold info about DB server
func NewDbServer ¶
NewDbServer creates ServerRef
func (ServerRef) FileName ¶ added in v0.16.0
FileName returns a name for a file (probably should be moved to a func in filestore package)
type ServerReferences ¶
type ServerReferences []ServerRef
ServerReferences defines slice
func (ServerReferences) Validate ¶
func (v ServerReferences) Validate() error
Validate returns error if not valid
type StateByEnv ¶
StateByEnv states by env GetID
func (StateByEnv) Validate ¶
func (v StateByEnv) Validate() error
Validate returns error if not valid
type StatusReporter ¶ added in v0.15.11
type StoreBrief ¶ added in v0.14.1
type StoreBrief struct {
Type string `json:"type,omitempty" firestore:"type,omitempty" yaml:"type,omitempty"`
Title string `json:"title,omitempty" firestore:"title,omitempty" yaml:"title,omitempty"`
Projects map[string]ProjectBrief `json:"projects,omitempty" firestore:"projects,omitempty"`
}
StoreBrief stores info about datatug storage known to a user
func (StoreBrief) Validate ¶ added in v0.14.1
func (v StoreBrief) Validate() error
Validate returns error if not valid
type StoreOption ¶ added in v0.15.0
type StoreOption func(op *StoreOptions)
func Depth ¶ added in v0.16.0
func Depth(depth int) StoreOption
type StoreOptions ¶ added in v0.15.0
type StoreOptions struct {
// contains filtered or unexported fields
}
func GetStoreOptions ¶ added in v0.15.0
func GetStoreOptions(opts ...StoreOption) (o StoreOptions)
func (StoreOptions) Depth ¶ added in v0.16.0
func (o StoreOptions) Depth() int
func (StoreOptions) Next ¶ added in v0.16.0
func (o StoreOptions) Next() StoreOptions
func (StoreOptions) ToSlice ¶ added in v0.16.0
func (o StoreOptions) ToSlice() (options []StoreOption)
type StoredQuery ¶ added in v0.28.0
type StoredQuery struct {
Query QueryDefWithFolderPath
Revision QueryRevision
}
StoredQuery pairs a loaded/persisted query with the revision of the exact bytes it was loaded from or written as.
type StringPattern ¶
type StringPattern struct {
Type string `json:"type,omitempty"` // Options: regexp, exact
Value string `json:"value,omitempty"`
CaseSensitive bool `json:"caseSensitive,omitempty"`
}
StringPattern hold patterns for names
func (StringPattern) Validate ¶
func (v StringPattern) Validate() error
Validate returns error if not valid
type StringPatterns ¶
type StringPatterns []*StringPattern
StringPatterns is a slice of *StringPattern
func (StringPatterns) Validate ¶
func (v StringPatterns) Validate() error
Validate returns error if not valid
type TabWidget ¶
type TabWidget struct {
Title string `json:"title"`
Widget BoardWidget `json:"widget,omitempty"`
}
TabWidget describes a tab widget
type TableColumns ¶
type TableColumns []*ColumnInfo
TableColumns defines slice
func (TableColumns) ByPrimaryKeyPosition ¶
func (v TableColumns) ByPrimaryKeyPosition() sort.Interface
ByPrimaryKeyPosition returns sort interface
func (TableColumns) Validate ¶
func (v TableColumns) Validate() error
Validate returns error if not valid
type TableDiff ¶
type TableDiff struct {
HitAndMiss
ColumnsDiff ColumnsDiff `json:"columnsDiff"`
}
TableDiff holds table diffs
type TableModel ¶
type TableModel struct {
DBCollectionKey
DbType string `json:"dbType,omitempty"` // e.g. "BASE TABLE", "VIEW", etc.
Columns ColumnModels
Checks Checks `json:"checks,omitempty"` // References to checks by type/id
ByEnv StateByEnv `json:"byEnv,omitempty"`
}
TableModel hold models for table or view
func (*TableModel) String ¶
func (v *TableModel) String() string
func (*TableModel) Validate ¶
func (v *TableModel) Validate() error
Validate returns error if not valid
type TableModels ¶
type TableModels []*TableModel
TableModels is a slice of *TableModel
func (TableModels) GetByKey ¶
func (v TableModels) GetByKey(k DBCollectionKey) *TableModel
GetByKey returns table by key (name, schema, catalog)
func (TableModels) GetByName ¶
func (v TableModels) GetByName(name string) *TableModel
GetByName returns table by name
type TableProps ¶
type TableProps struct {
DbType string `json:"dbType,omitempty"` // e.g. "BASE TABLE", "VIEW", "Collection", etc.
UniqueKeys []*UniqueKey `json:"uniqueKeys,omitempty"`
}
TableProps holds properties of a table
func (TableProps) Validate ¶
func (v TableProps) Validate() error
Validate returns error if not valid
type Tables ¶
type Tables []*CollectionInfo
Tables is a slice of *CollectionInfo
func (Tables) GetByKey ¶
func (v Tables) GetByKey(k DBCollectionKey) *CollectionInfo
GetByKey return 9a *CollectionInfo by key or nil if not found
type TabsWidgetDef ¶
type TabsWidgetDef struct {
WidgetBase
Tabs []TabWidget `json:"tabs"`
}
TabsWidgetDef describes set of tab widgets
func (TabsWidgetDef) Validate ¶
func (v TabsWidgetDef) Validate() error
Validate returns error if not valid
type UniqueKey ¶
type UniqueKey struct {
Name string `json:"name"`
Columns []string `json:"columns"`
IsClustered bool `json:"isClustered,omitempty"`
}
UniqueKey holds metadata about unique key
type UniqueKeys ¶
type UniqueKeys []UniqueKey
UniqueKeys defines slice
func (UniqueKeys) Validate ¶
func (v UniqueKeys) Validate() error
Validate returns error if not valid
type User ¶ added in v0.14.1
type User struct {
Datatug *UserDatatugInfo `json:"datatug,omitempty" firestore:"datatug,omitempty"`
}
User defines a user record with props related to Datatug
type UserDatatugInfo ¶
type UserDatatugInfo struct {
Stores map[string]StoreBrief `json:"stores,omitempty" firestore:"stores,omitempty"`
}
UserDatatugInfo holds user info for DataTug project
func (UserDatatugInfo) Validate ¶
func (v UserDatatugInfo) Validate() error
Validate returns error if not valid
type ValueRegexCheck ¶
type ValueRegexCheck struct {
Regex string `json:"regex"`
}
ValueRegexCheck holds regex to check
type VarInfo ¶
type VarInfo struct {
Type string `json:"type" firestore:"type"`
Value string `json:"value,omitempty" firestore:"value,omitempty"`
}
VarInfo hold info about var type & value
type VarSetting ¶
type VarSetting struct {
Type string `json:"type" firestore:"type"`
ValuePattern string `json:"valuePattern,omitempty" firestore:"valuePattern,omitempty"`
Min *int `json:"min,omitempty" firestore:"min,omitempty"`
Max *int `json:"max,omitempty" firestore:"max,omitempty"`
}
VarSetting record
type Variables ¶
type Variables struct {
Vars map[string]VarInfo `json:"vars,omitempty" firestore:"vars,omitempty"`
}
Variables properties holder
type WidgetBase ¶
type WidgetBase struct {
Title string `json:"title,omitempty"`
Parameters Parameters `json:"parameters,omitempty"`
}
WidgetBase is base struct for widgets
func (WidgetBase) Validate ¶
func (v WidgetBase) Validate(isTitleRequired bool) error
Validate returns error if not valid
type WidgetParameterBinding ¶ added in v0.25.0
type WidgetParameterBinding struct {
// ID is the id of the referenced query's parameter.
ID string `json:"id"`
// Value is a constant value for the parameter, e.g. recorded by
// "pin this result to a board". Mutually exclusive with BoardParameterID.
Value interface{} `json:"value,omitempty"`
// BoardParameterID takes the value from the board parameter with this id,
// so a viewer changing a board parameter re-runs the widget's query.
// Mutually exclusive with Value.
BoardParameterID string `json:"boardParameterId,omitempty"`
}
WidgetParameterBinding binds one parameter of the referenced query to either a constant value or one of the board's own parameters.
func (WidgetParameterBinding) Validate ¶ added in v0.25.0
func (v WidgetParameterBinding) Validate() error
Validate returns error if not valid. Neither Value nor BoardParameterID being set is VALID: it means "use the query parameter's own default", i.e. ParameterDef.DefaultValue for the referenced query parameter.
type WidgetParameterBindings ¶ added in v0.25.0
type WidgetParameterBindings []WidgetParameterBinding
WidgetParameterBindings is a slice of WidgetParameterBinding.
func (WidgetParameterBindings) Validate ¶ added in v0.25.0
func (v WidgetParameterBindings) Validate() error
Validate returns error if not valid
Source Files
¶
- api_catalog.go
- boards.go
- change_type.go
- changeset.go
- checks.go
- columns.go
- credentials.go
- datasets.go
- db_collection.go
- db_collection_key.go
- db_model.go
- db_objects.go
- dbcatalog.go
- diffs.go
- doc.go
- encoder.go
- entities.go
- env_db.go
- env_db_server.go
- env_server.go
- env_summary.go
- environment.go
- errors.go
- folder.go
- helpers.go
- interfaces.go
- models.go
- parameters.go
- proj_item.go
- proj_loader.go
- project.go
- query.go
- query_capture.go
- query_credentials.go
- query_revision.go
- query_revision_errors.go
- query_storage_screen.go
- recordset.go
- recordset_def.go
- repository_root_datatug_file.go
- scripts.go
- server.go
- store_interfaces.go
- store_options.go
- tag.go
- types.go
- user.go
- variables.go