Référence d'API — @nodefony/drizzle — orm-core
stable
Documentation › Référence d’API › @nodefony/drizzle › orm-core
Générée depuis les déclarations de types publiées de
@nodefony/drizzle10.0.0-beta.5 : exactement ce que reçoit une application qui l’installe. Cette page n’existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.
@nodefony/drizzle#
import { … } from "@nodefony/drizzle" — 7 symboles.
Classes (3)#
DrizzleOrm#
class DrizzleOrm extends Orm
get liveness(): "events" | "assumed"— Ce que cet adapter sait de l’état de sa connexion, par dialecte.constructor(name: string, options?: DrizzleOrmOptions)get derivesSchema(): boolean— Le schéma est-il dérivé du code à la connexion, ou appartient-il aux migrations ?get dialect(): SqlDialect— Dialecte SQL de ce connecteur.get schemaDrift(): ISchemaComparison | null— Écart constaté entre le schéma déclaré par le code et la base —nullquand la base est conforme.compareToDeclared(): Promise<ISchemaComparison>— Compare la base à ce que le code déclare — sans jamais rien modifier.get location(): string— Emplacement PHYSIQUE lisible de la base, pour l’écran Studio « Stores » (« où sont écrites mes données ?protected onConnect(): Promise<void>— Établit la connexion native du driver (compilation des entités, pool…).disconnect(): Promise<void>— Ferme la connexion et libère le pool.getRepository<T = unknown>(name: string): IRepository<T>— Repository typé d’une entité enregistrée.transaction<R>(work: (tx: ITransaction) => Promise<R>): Promise<R>— Exécuteworkdans une transaction, sur les TROIS dialectes : commit si la closure résout, rollback si elle rejette (cfDrizzleTransaction).getNativeConnection<C = unknown>(): C— Expose la connexion native du driver (trappe SQL/commandes brutes).migrationStatus(): Promise<IOrmMigrationReply>— État des migrations de ce connecteur — la MÊME charge utile queorm:migrate:status --json, jamais un second calcul.migrationPlan(): Promise<IOrmMigrationPlanReply>— Ce qui S’APPLIQUERAIT, avec son SQL — lecture seule.applyMigrations(): Promise<IOrmMigrationApplyReply>— Applique les migrations en attente — développement seulement, le lecteur injecté refuse ailleurs en le disant.ping(): Promise<void>— Ping bas-coût :SELECT 1— round-trip RÉEL vers la base, routé par dialecte (pool pg/mysql, client better-sqlite3 synchrone).probe(): Promise<IOrmProbe>— Sonde driver-spécifique, routée par dialecte — alimente le data plane admin (panneau Studio ORM) : - sqlite : stockage via PRAGMA (synchrone, bon marché) — taille (page_count × page_size), m …describeEntity(name: string): IColumnInfo[]— Colonnes normalisées d’une entité, dérivées du DDL Drizzle (getTableConfig) — alimente le graphe canonique / ERD / contexte IA.describeTables(): { entity: string; table: string; columns: IColumnInfo[]; }[]— Décrit le schéma ENTIER attendu par le code : une entrée par table.describeConnection(): IConnectionInfo— Décrit la connexion : driversqlite(better-sqlite3) + cible (chemin du fichier,:memory:pour les tests).
DrizzleRepository#
class DrizzleRepository<T = unknown> implements IRepository<T>
Repository portable (contrat IRepository) au-dessus d’une table Drizzle + driver better-sqlite3.
constructor(db: DrizzleDb, table: DrizzleTable, relations: Record<string, DrizzleResolvedRelation>, connector?: string, dialect?: SqlDialect, transactional?: boolean)find(criteria?: Criteria<T>, options?: RepositoryReadOptions): Promise<T[]>— Retourne toutes les entités correspondant au critère (toutes si omis).findOne(criteria: Criteria<T>, options?: RepositoryReadOptions): Promise<T | null>— Retourne la première entité correspondant au critère, ounull.create(data: Partial<T>): Promise<T>— Persiste une nouvelle entité et retourne sa version persistée (id généré, valeurs par défaut).createMany(data: Partial<T>[]): Promise<T[]>— Insère plusieurs entités en une seule requête (INSERT … VALUES (…),(…)SQL /insertManyMongo) et retourne leurs versions persistées (ids générés, défauts appliqués), dans l’ordre.updateOne(criteria: Criteria<T>, data: Partial<T>): Promise<T | null>— Met à jour au plus une entité correspondant au critère, de façon atomique, et retourne sa version persistée (ounullsi aucune ne correspond).upsert(criteria: Criteria<T>, update: UpdateData<T>, insertOnly?: Partial<T>): Promise<T>— Insère ou met à jour atomiquement l’entité identifiée parcriteria(clé unique), en une seule requête (INSERT … ON CONFLICT DO UPDATE … RETURNINGSQL /findOneAndUpdate({ upsert })Mongo …updateMany(criteria: Criteria<T>, data: Partial<T>): Promise<number>— Met à jour toutes les entités correspondant au critère et retourne le nombre de lignes modifiées (parité de signature avecIRepository.delete).increment(criteria: Criteria<T>, changes: Partial<Record<keyof T, number>>): Promise<T | null>— Incrémente atomiquement des champs numériques d’au plus une entité (SET f = f + ?SQL /$incMongo), sans read-modify-write (donc sans race) — pour les compteurs (stats, usage/tokens, rate …delete(criteria: Criteria<T>): Promise<number>— Supprime les entités correspondant au critère.deleteOne(criteria: Criteria<T>): Promise<boolean>— Supprime au plus une entité de façon atomique (symétrique d’IRepository.updateOne;DELETE … LIMIT 1SQL /deleteOneMongo).findOneAndDelete(criteria: Criteria<T>): Promise<T | null>— Supprime au plus une entité et retourne sa valeur supprimée (ounull), de façon atomique (DELETE … RETURNINGSQL /findOneAndDeleteMongo) — claim-and-remove (file de jobs, outbox, pop a …count(criteria?: Criteria<T>): Promise<number>— Compte les entités correspondant au critère (toutes si omis).countDistinct(field: keyof T & string, criteria?: Criteria<T>): Promise<number>—COUNT(DISTINCT col)natif — la déduplication reste dans le moteur, aucune ligne n’est rapatriée.exists(criteria: Criteria<T>): Promise<boolean>— Indique si au moins une entité correspond au critère, sans rapatrier la ligne (SELECT 1 … LIMIT 1SQL /existsMongo).withTransaction(tx: ITransaction): IRepository<T>— Retourne une vue de ce repository liée à une transaction : toutes ses opérations s’exécutent danstx(commit/rollback gérés parIOrm.transaction()).
DrizzleTransaction#
class DrizzleTransaction implements ITransaction
Adapte une transaction SQL au contrat portable ITransaction, sur les trois dialectes (sqlite, postgres, mysql).
constructor(db: DrizzleDb, driver: ITxDriver)isDone(): boolean— Indique si la transaction est déjà terminée (commit ou rollback).commit(): Promise<void>— Valide la transaction (no-op si déjà terminée).rollback(): Promise<void>— Annule la transaction (no-op si déjà terminée).savepoint(name: string): Promise<void>— Crée un savepoint nommé (nom validé — anti-injection, cfassertSavepointName).rollbackTo(name: string): Promise<void>— Annule jusqu’au savepoint sans terminer la transaction (nom validé).getNative<C = unknown>(): C— Expose le handle Drizzle lié à la connexion encadrée par la transaction.
Fonctions (1)#
seedEntityRow#
function seedEntityRow(orm: DrizzleOrm, entity: IEntity): Promise<string | number>
Insère une ligne minimale dans la table d’une entité, et rend son identifiant.
Interfaces (2)#
DrizzleOrmOptions#
interface DrizzleOrmOptions
Options de connexion de l’adapter Drizzle (driver selon dialect).
dialect?: SqlDialect— Dialecte SQL :sqlite(défaut, driver better-sqlite3) ·postgres(driverpg, lazy) ·mysql(drivermysql2, lazy).filename?: string— Fichier SQLite (":memory:"par défaut) — dialectesqliteuniquement.url?: string— Chaîne de connexion (postgres://…,mysql://…) — dialectespostgres/mysql.container?: Container— Container du service qui construit l’ORM — il porte lesyslogdu kernel.deriveSchema?: boolean— Le schéma doit-il être DÉRIVÉ du code à la connexion ?migrationStatus?: () => Promise<IOrmMigrationReply>— Qui sait lire l’état des migrations de CE connecteur.migrationPlan?: () => Promise<IOrmMigrationPlanReply>— Qui sait dire ce qui S’APPLIQUERAIT — même origine quemigrationStatus.applyMigrations?: () => Promise<IOrmMigrationApplyReply>— Qui sait APPLIQUER — refuse hors développement, en le disant.
DrizzleResolvedRelation#
interface DrizzleResolvedRelation
Relation résolue au boot de l’ORM, prête pour l’eager-load manuel (sans la couche relations() de Drizzle, pour rester générique cross-entités).
type: "one-to-many" | "many-to-one" | "one-to-one"— Cardinalité.targetTable: DrizzleTable— Table cible Drizzle (variante du dialecte du connecteur).foreignKey: string— Colonne clé étrangère (sur la cible pour 1-N, sur la source pour N-1).localKey: string— Clé primaire de l’entité courante (côté parent du 1-N).targetKey: string— Clé primaire de la cible (côté lookup du N-1).
Types (1)#
DrizzleDb#
type DrizzleDb = BetterSQLite3Database
Handle Drizzle (instance racine ou transaction) — schéma résolu côté adapter.