UNPKG

typeorm-sharding-repository

Version:

TypeORM Sharding Repository: Enables TypeORM to be utilized in a distributed database environment.

55 lines (54 loc) 2.88 kB
import { DataSource } from 'typeorm'; import { BaseDataSourceOptions } from 'typeorm/data-source/BaseDataSourceOptions'; import { AuroraMysqlConnectionOptions } from 'typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions'; import { AuroraPostgresConnectionOptions } from 'typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions'; import { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions'; import { OracleConnectionOptions } from 'typeorm/driver/oracle/OracleConnectionOptions'; import { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions'; import { SqliteConnectionOptions } from 'typeorm/driver/sqlite/SqliteConnectionOptions'; import { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions'; export interface AbstractShardingDataSource<S, T extends BaseDataSourceOptions> extends BaseDataSourceOptions { shards: Array<Omit<T, keyof BaseDataSourceOptions> & { onInitialize?: (dataSource: DataSource) => Promise<void>; } & S>; } export interface PostgresShardingDataSource<S> extends AbstractShardingDataSource<S, PostgresConnectionOptions> { type: 'postgres'; } export interface AuroraPostgresShardingDataSource<S> extends AbstractShardingDataSource<S, AuroraPostgresConnectionOptions> { type: 'aurora-postgres'; } export interface MysqlShardingDataSource<S> extends AbstractShardingDataSource<S, MysqlConnectionOptions> { type: 'mysql' | 'mariadb'; } export interface AuroraMysqlShardingDataSource<S> extends AbstractShardingDataSource<S, AuroraMysqlConnectionOptions> { type: 'aurora-mysql'; } export interface OracleShardingDataSource<S> extends AbstractShardingDataSource<S, OracleConnectionOptions> { type: 'oracle'; } export interface SqliteShardingDataSource<S> extends AbstractShardingDataSource<S, SqliteConnectionOptions> { type: 'sqlite'; } export interface BetterSqlite3ShardingDataSource<S> extends AbstractShardingDataSource<S, BetterSqlite3ConnectionOptions> { type: 'better-sqlite3'; } export declare type AbstractShardingDataSourceOptions<S = {}> = PostgresShardingDataSource<S> | AuroraPostgresShardingDataSource<S> | MysqlShardingDataSource<S> | AuroraMysqlShardingDataSource<S> | OracleShardingDataSource<S> | SqliteShardingDataSource<S> | BetterSqlite3ShardingDataSource<S>; export declare enum ShardingType { RANGE = "RANGE" } export declare type DefaultShardingKeyType = number | string; export interface RangeShardingRule<T> { /** * greater or equals */ minKey: T; /** * lesser */ maxKey: T; } export declare type RangeShardingDataSourceOptions<T = DefaultShardingKeyType> = AbstractShardingDataSourceOptions<RangeShardingRule<T>> & { shardingType: ShardingType.RANGE; }; export declare type ShardingDataSourceOptions = RangeShardingDataSourceOptions;