Skip to content

Documentation / @tenancy-node/db / DatabaseDriver

Interface: DatabaseDriver ​

Defined in: db/src/drivers/driver.ts:28

Driver de un motor (Strategy). Todo lo que depende del motor pasa por aquí: crear y borrar bases y usuarios, candados y detección de errores. Los identificadores que recibe ya vienen validados por el paquete.

Properties ​

adminDatabase ​

readonly adminDatabase: string | undefined

Defined in: db/src/drivers/driver.ts:37

Base a la que se conecta el usuario administrador (PostgreSQL necesita una).


defaultPort ​

readonly defaultPort: number

Defined in: db/src/drivers/driver.ts:31


kind ​

readonly kind: DialectKind

Defined in: db/src/drivers/driver.ts:30


maxIdentifierLength ​

readonly maxIdentifierLength: number

Defined in: db/src/drivers/driver.ts:33

Largo máximo de un nombre de base (64 en MySQL, 63 en PostgreSQL).


maxUserLength ​

readonly maxUserLength: number

Defined in: db/src/drivers/driver.ts:35

Largo máximo de un usuario (32 en MySQL, 63 en PostgreSQL).


name ​

readonly name: "mysql" | "postgres" | "sqlite" | "mssql" | "mariadb"

Defined in: db/src/drivers/driver.ts:29


supportsSchemas ​

readonly supportsSchemas: boolean

Defined in: db/src/drivers/driver.ts:46

El motor admite aislar tenants por schema dentro de una base (PostgreSQL).

Methods ​

connect() ​

connect(options, pool): OpenedConnection

Defined in: db/src/drivers/driver.ts:43

Abre un pool. onError recibe los errores de conexiones inactivas (por ejemplo, si la base se reinicia): sin ese manejador, un pool de pg tumba el proceso.

Parameters ​

options ​

ConnectionOptions

pool ​

PoolOptions

Returns ​

OpenedConnection


createDatabase() ​

createDatabase(admin, name): Promise<void>

Defined in: db/src/drivers/driver.ts:64

Idempotente: si ya existe no hace nada.

Parameters ​

admin ​

AnyKysely

name ​

string

Returns ​

Promise<void>


createRole()? ​

optional createRole(admin, username, password): Promise<void>

Defined in: db/src/drivers/driver.ts:58

Crea (o actualiza) un rol con login, sin darle ninguna base.

Parameters ​

admin ​

AnyKysely

username ​

string

password ​

string

Returns ​

Promise<void>


createSchema()? ​

optional createSchema(admin, schema): Promise<void>

Defined in: db/src/drivers/driver.ts:54

Idempotente.

Parameters ​

admin ​

AnyKysely

schema ​

string

Returns ​

Promise<void>


createUser() ​

createUser(admin, username, password, database): Promise<void>

Defined in: db/src/drivers/driver.ts:68

Crea el usuario (si no existe) y le da acceso solo a database.

Parameters ​

admin ​

AnyKysely

username ​

string

password ​

string

database ​

string

Returns ​

Promise<void>


databaseExists() ​

databaseExists(admin, name): Promise<boolean>

Defined in: db/src/drivers/driver.ts:62

Parameters ​

admin ​

AnyKysely

name ​

string

Returns ​

Promise<boolean>


dropDatabase() ​

dropDatabase(admin, name): Promise<void>

Defined in: db/src/drivers/driver.ts:66

Idempotente.

Parameters ​

admin ​

AnyKysely

name ​

string

Returns ​

Promise<void>


dropSchema()? ​

optional dropSchema(admin, schema): Promise<void>

Defined in: db/src/drivers/driver.ts:56

Idempotente; borra también las tablas del schema.

Parameters ​

admin ​

AnyKysely

schema ​

string

Returns ​

Promise<void>


dropUser() ​

dropUser(admin, username): Promise<void>

Defined in: db/src/drivers/driver.ts:69

Parameters ​

admin ​

AnyKysely

username ​

string

Returns ​

Promise<void>


grantSchema()? ​

optional grantSchema(admin, username, schema, database): Promise<void>

Defined in: db/src/drivers/driver.ts:60

Da al usuario del tenant acceso solo a su schema dentro de database.

Parameters ​

admin ​

AnyKysely

username ​

string

schema ​

string

database ​

string

Returns ​

Promise<void>


isTransientError() ​

isTransientError(error): boolean

Defined in: db/src/drivers/driver.ts:76

Errores que se resuelven reintentando la transacción (deadlock, espera de lock, serialización).

Parameters ​

error ​

unknown

Returns ​

boolean


isUniqueViolation() ​

isUniqueViolation(error): boolean

Defined in: db/src/drivers/driver.ts:74

Parameters ​

error ​

unknown

Returns ​

boolean


schemaExists()? ​

optional schemaExists(admin, schema): Promise<boolean>

Defined in: db/src/drivers/driver.ts:52

Parameters ​

admin ​

AnyKysely

schema ​

string

Returns ​

Promise<boolean>


scope()? ​

optional scope(base, schema): OpenedConnection

Defined in: db/src/drivers/driver.ts:51

Instancia Kysely sobre un pool existente que fija el search_path del schema en cada conexión que toma. No abre conexiones propias: cerrarla no cierra el pool.

Parameters ​

base ​

OpenedConnection

schema ​

string

Returns ​

OpenedConnection


withLock() ​

withLock<T>(db, key, timeoutMs, fn): Promise<T>

Defined in: db/src/drivers/driver.ts:72

Ejecuta fn con un candado exclusivo entre procesos (GET_LOCK / pg_advisory_lock).

Type Parameters ​

T ​

T

Parameters ​

db ​

AnyKysely

key ​

string

timeoutMs ​

number

fn ​

() => Promise<T>

Returns ​

Promise<T>

Publicado bajo la licencia MIT.