mirror of
https://github.com/grafana/grafana.git
synced 2024-11-30 20:54:22 -06:00
be06d37a20
* Add go code generator for coremodels * Just generate the entire coremodel for now Maybe we'll need more flexibility as more coremodels are added, but for now this is fine. * Add note on type comment about stability, grodkit * Remove local replace directive for thema * Generate typescript from coremodel * Update pkg/coremodel/dashboard/addenda.go Co-authored-by: Ryan McKinley <ryantxu@gmail.com> * Update cuetsy to new release * Update thema to latest * Fix enum generation for FieldColorModeId * Put main generated object at the end of the file * Tweaks to generated Go output * Retweak back to var * Add generated coremodel test * Remove local replace statement again * Add Make target and call into cuetsy cmd from gen * Rename and comment linsrc for readability * Move key codegen bits into reusable package * Move body of cuetsifier into codegen pkg Also genericize the diffing output into reusable WriteDiffer. * Refactor coremodel generator to use WriteDiffer * Add gen-cue step to CI * Whip all the codegen automation into shape * Add simplistic coremodel canonicality controls * Remove erroneously committed test * Bump thema version * Remove dead code * Improve wording of non-canonicality comment Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
30 lines
1.0 KiB
Go
30 lines
1.0 KiB
Go
package coremodel
|
|
|
|
// Generates all code derived from coremodel Thema lineages that's used directly
|
|
// by both the frontend and backend.
|
|
//go:generate go run gen.go
|
|
|
|
import (
|
|
"github.com/grafana/thema"
|
|
)
|
|
|
|
// Interface is the primary coremodel interface that must be implemented by all
|
|
// Grafana coremodels. A coremodel is the foundational, canonical schema for
|
|
// some known-at-compile-time Grafana object.
|
|
//
|
|
// Currently, all Coremodels are expressed as Thema lineages.
|
|
type Interface interface {
|
|
// Lineage should return the canonical Thema lineage for the coremodel.
|
|
Lineage() thema.Lineage
|
|
|
|
// CurrentSchema should return the schema of the version that the Grafana backend
|
|
// is currently written against. (While Grafana can accept data from all
|
|
// older versions of the Thema schema, backend Go code is written against a
|
|
// single version for simplicity)
|
|
CurrentSchema() thema.Schema
|
|
|
|
// GoType should return a pointer to the Go struct type that corresponds to
|
|
// the Current() schema.
|
|
GoType() interface{}
|
|
}
|