Documentation
¶
Overview ¶
Package db is codefit's neutral, format-agnostic model of a database's structure — the schema a DB-dimension rule reasons over, blind to where it came from (Prisma today, SQL-DDL later).
It is a LEAF: it imports nothing from internal/providers (or any other codefit package). The provider layer depends on db, never the reverse — the same one-way arrow core/findings keeps (ADR 0014). A provider's schema parser FILLS this model; the core only consumes it.
The model defines the entire OLTP surface Phase 2 audits, even what a given parser cannot express: a Prisma parse fills Tables/Columns/Indexes/ForeignKeys and leaves Views/Procedures/Triggers empty (the SQL-DDL parser of slice 3 fills those). Every element carries an origin db.Pos{File, Line} so a finding and the baseline can anchor by file+line/content.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Column ¶
type Column struct {
Name string
// DBName is the real column name in the database when remapped via @map. EMPTY
// means "no remap" (fall back to Name) — not defaulted to Name, same rationale
// as Table.DBName.
DBName string
Pos Pos
Type Type
RawType string
Nullable bool
List bool // multivalued / array, e.g. Prisma String[] (DB-002)
}
Column is one field of a table. Type is the neutral classification; RawType is the origin type verbatim ("String", "String @db.Text", "Role") so a rule can still see what the source actually wrote (e.g. TEXT used as a FK, DB-051). The "is this sensitive / encrypted" judgment is the rule's, never a flag here.
type ForeignKey ¶
ForeignKey is a relationship from local Columns to RefColumns of RefTable. Composite keys are supported. Only explicit relations are modeled; implicit many-to-many (no local FK columns) is a declared limit this slice (ADR 0014).
type Index ¶
Index is an index over one or more columns. Unique distinguishes a unique constraint/index from a plain one. PK is NOT represented as an Index — it is Table.PrimaryKey; a rule that treats the PK as an implicit index does so itself (deferred consideration, ADR 0014).
type Pos ¶
Pos is the origin of a schema element: the file it was parsed from and its 1-based line. Every element carries one so a finding and the baseline can anchor by file+line/content (the access-layer missing-line gap, relevamiento §E, not repeated here).
type Schema ¶
type Schema struct {
Tables []Table
Views []View // OLTP surface; not filled by the Prisma parser
Procedures []Procedure // idem
Triggers []Trigger // idem
}
Schema is the parsed structure of a database. It models the whole OLTP surface Phase 2 audits; a given parser fills the subset its format expresses (a Prisma parse leaves Views/Procedures/Triggers empty — slice 3's SQL-DDL parser fills them).
type Table ¶
type Table struct {
Name string
// DBName is the real table name in the database when remapped via @@map (or the
// SQL identifier when it differs from the model name). EMPTY means "no remap" —
// a consumer falls back to Name; it is deliberately NOT defaulted to Name, so a
// rule can tell an explicit remap from none. FKs/indexes reference by model
// name, not DBName (ADR 0014).
DBName string
Pos Pos
Columns []Column
PrimaryKey []string // column names; empty = no PK (DB-050); len>1 = composite
ForeignKeys []ForeignKey
Indexes []Index
}
Table is a relation: its columns, primary key, foreign keys and indexes. PK and FK live at the table level (not as Column flags) because they can be composite and the membership is derivable by column name — see ADR 0014.
type Type ¶
type Type string
Type is the neutral column type. TypeText is distinct from TypeString so a rule can tell a TEXT column used as a FK (DB-051) from a normal string. TypeUnknown is the honest fallback for a type the parser does not classify.