UNPKG

@iota-big3/sdk-gateway

Version:

Universal API Gateway with protocol translation, intelligent routing, rate limiting, health checking, and caching

308 lines 10.5 kB
"use strict"; /** * Database Operation Type Definitions * * @module database-types * @description Comprehensive types for database operations including: * - Connection management and pooling * - Query building and execution * - Transactions and isolation levels * - Schema migrations * - Type-safe ORM patterns * - Database-agnostic interfaces * - Performance monitoring * - Backup and recovery * * Designed for type-safe database operations across multiple engines */ Object.defineProperty(exports, "__esModule", { value: true }); exports.databaseTypes = exports.CompressionType = exports.BackupType = exports.CascadeOption = exports.RelationType = exports.ConstraintType = exports.IndexMethod = exports.IndexType = exports.ReferentialAction = exports.SqlDataType = exports.TransactionStatus = exports.IsolationLevel = exports.ComparisonOperator = exports.ConnectionStatus = exports.DatabaseType = void 0; exports.validatePoolConfig = validatePoolConfig; exports.calculateQueryComplexity = calculateQueryComplexity; exports.validateMigrationOrder = validateMigrationOrder; /** * Supported database types */ var DatabaseType; (function (DatabaseType) { DatabaseType["PostgreSQL"] = "POSTGRESQL"; DatabaseType["MySQL"] = "MYSQL"; DatabaseType["MariaDB"] = "MARIADB"; DatabaseType["SQLite"] = "SQLITE"; DatabaseType["MongoDB"] = "MONGODB"; DatabaseType["Redis"] = "REDIS"; DatabaseType["Cassandra"] = "CASSANDRA"; DatabaseType["DynamoDB"] = "DYNAMODB"; DatabaseType["CosmosDB"] = "COSMOSDB"; DatabaseType["Neo4j"] = "NEO4J"; })(DatabaseType || (exports.DatabaseType = DatabaseType = {})); /** * Connection status */ var ConnectionStatus; (function (ConnectionStatus) { ConnectionStatus["Connecting"] = "CONNECTING"; ConnectionStatus["Connected"] = "CONNECTED"; ConnectionStatus["Disconnected"] = "DISCONNECTED"; ConnectionStatus["Error"] = "ERROR"; ConnectionStatus["Pooled"] = "POOLED"; })(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {})); /** * Comparison operators */ var ComparisonOperator; (function (ComparisonOperator) { ComparisonOperator["Equal"] = "="; ComparisonOperator["NotEqual"] = "!="; ComparisonOperator["GreaterThan"] = ">"; ComparisonOperator["GreaterThanOrEqual"] = ">="; ComparisonOperator["LessThan"] = "<"; ComparisonOperator["LessThanOrEqual"] = "<="; ComparisonOperator["Like"] = "LIKE"; ComparisonOperator["NotLike"] = "NOT LIKE"; ComparisonOperator["In"] = "IN"; ComparisonOperator["NotIn"] = "NOT IN"; ComparisonOperator["IsNull"] = "IS NULL"; ComparisonOperator["IsNotNull"] = "IS NOT NULL"; ComparisonOperator["Between"] = "BETWEEN"; })(ComparisonOperator || (exports.ComparisonOperator = ComparisonOperator = {})); /** * Transaction isolation levels */ var IsolationLevel; (function (IsolationLevel) { IsolationLevel["ReadUncommitted"] = "READ_UNCOMMITTED"; IsolationLevel["ReadCommitted"] = "READ_COMMITTED"; IsolationLevel["RepeatableRead"] = "REPEATABLE_READ"; IsolationLevel["Serializable"] = "SERIALIZABLE"; IsolationLevel["Snapshot"] = "SNAPSHOT"; })(IsolationLevel || (exports.IsolationLevel = IsolationLevel = {})); /** * Transaction status */ var TransactionStatus; (function (TransactionStatus) { TransactionStatus["Active"] = "ACTIVE"; TransactionStatus["Committed"] = "COMMITTED"; TransactionStatus["RolledBack"] = "ROLLED_BACK"; TransactionStatus["Failed"] = "FAILED"; })(TransactionStatus || (exports.TransactionStatus = TransactionStatus = {})); /** * SQL data types */ var SqlDataType; (function (SqlDataType) { // Numeric SqlDataType["TinyInt"] = "TINYINT"; SqlDataType["SmallInt"] = "SMALLINT"; SqlDataType["MediumInt"] = "MEDIUMINT"; SqlDataType["Int"] = "INT"; SqlDataType["BigInt"] = "BIGINT"; SqlDataType["Decimal"] = "DECIMAL"; SqlDataType["Numeric"] = "NUMERIC"; SqlDataType["Float"] = "FLOAT"; SqlDataType["Double"] = "DOUBLE"; SqlDataType["Real"] = "REAL"; // String SqlDataType["Char"] = "CHAR"; SqlDataType["VarChar"] = "VARCHAR"; SqlDataType["Text"] = "TEXT"; SqlDataType["TinyText"] = "TINYTEXT"; SqlDataType["MediumText"] = "MEDIUMTEXT"; SqlDataType["LongText"] = "LONGTEXT"; // Binary SqlDataType["Binary"] = "BINARY"; SqlDataType["VarBinary"] = "VARBINARY"; SqlDataType["Blob"] = "BLOB"; SqlDataType["TinyBlob"] = "TINYBLOB"; SqlDataType["MediumBlob"] = "MEDIUMBLOB"; SqlDataType["LongBlob"] = "LONGBLOB"; // Date/Time SqlDataType["Date"] = "DATE"; SqlDataType["Time"] = "TIME"; SqlDataType["DateTime"] = "DATETIME"; SqlDataType["Timestamp"] = "TIMESTAMP"; SqlDataType["Year"] = "YEAR"; // Other SqlDataType["Boolean"] = "BOOLEAN"; SqlDataType["Json"] = "JSON"; SqlDataType["Jsonb"] = "JSONB"; SqlDataType["Uuid"] = "UUID"; SqlDataType["Xml"] = "XML"; SqlDataType["Enum"] = "ENUM"; SqlDataType["Set"] = "SET"; SqlDataType["Array"] = "ARRAY"; SqlDataType["Geometry"] = "GEOMETRY"; })(SqlDataType || (exports.SqlDataType = SqlDataType = {})); /** * Referential actions */ var ReferentialAction; (function (ReferentialAction) { ReferentialAction["NoAction"] = "NO ACTION"; ReferentialAction["Restrict"] = "RESTRICT"; ReferentialAction["Cascade"] = "CASCADE"; ReferentialAction["SetNull"] = "SET NULL"; ReferentialAction["SetDefault"] = "SET DEFAULT"; })(ReferentialAction || (exports.ReferentialAction = ReferentialAction = {})); /** * Index types */ var IndexType; (function (IndexType) { IndexType["BTree"] = "BTREE"; IndexType["Hash"] = "HASH"; IndexType["GiST"] = "GIST"; IndexType["GIN"] = "GIN"; IndexType["FullText"] = "FULLTEXT"; IndexType["Spatial"] = "SPATIAL"; })(IndexType || (exports.IndexType = IndexType = {})); /** * Index methods */ var IndexMethod; (function (IndexMethod) { IndexMethod["BTree"] = "btree"; IndexMethod["Hash"] = "hash"; IndexMethod["Gist"] = "gist"; IndexMethod["SpGist"] = "spgist"; IndexMethod["Gin"] = "gin"; IndexMethod["Brin"] = "brin"; })(IndexMethod || (exports.IndexMethod = IndexMethod = {})); /** * Constraint types */ var ConstraintType; (function (ConstraintType) { ConstraintType["Check"] = "CHECK"; ConstraintType["Unique"] = "UNIQUE"; ConstraintType["PrimaryKey"] = "PRIMARY_KEY"; ConstraintType["ForeignKey"] = "FOREIGN_KEY"; ConstraintType["NotNull"] = "NOT_NULL"; ConstraintType["Default"] = "DEFAULT"; })(ConstraintType || (exports.ConstraintType = ConstraintType = {})); /** * Relation types */ var RelationType; (function (RelationType) { RelationType["OneToOne"] = "ONE_TO_ONE"; RelationType["OneToMany"] = "ONE_TO_MANY"; RelationType["ManyToOne"] = "MANY_TO_ONE"; RelationType["ManyToMany"] = "MANY_TO_MANY"; })(RelationType || (exports.RelationType = RelationType = {})); /** * Cascade options */ var CascadeOption; (function (CascadeOption) { CascadeOption["Insert"] = "INSERT"; CascadeOption["Update"] = "UPDATE"; CascadeOption["Delete"] = "DELETE"; CascadeOption["SoftDelete"] = "SOFT_DELETE"; CascadeOption["Recover"] = "RECOVER"; })(CascadeOption || (exports.CascadeOption = CascadeOption = {})); /** * Backup types */ var BackupType; (function (BackupType) { BackupType["Full"] = "FULL"; BackupType["Incremental"] = "INCREMENTAL"; BackupType["Differential"] = "DIFFERENTIAL"; BackupType["TransactionLog"] = "TRANSACTION_LOG"; BackupType["Snapshot"] = "SNAPSHOT"; })(BackupType || (exports.BackupType = BackupType = {})); /** * Compression types */ var CompressionType; (function (CompressionType) { CompressionType["None"] = "NONE"; CompressionType["Gzip"] = "GZIP"; CompressionType["Bzip2"] = "BZIP2"; CompressionType["Lz4"] = "LZ4"; CompressionType["Zstd"] = "ZSTD"; })(CompressionType || (exports.CompressionType = CompressionType = {})); // ============================================ // Validation Functions // ============================================ /** * Validate connection pool configuration */ function validatePoolConfig(config) { const errors = []; if (config.min < 0) { errors.push('Minimum pool size must be non-negative'); } if (config.max < config.min) { errors.push('Maximum pool size must be >= minimum size'); } if (config.acquireTimeout && config.acquireTimeout < 0) { errors.push('Acquire timeout must be positive'); } if (errors.length > 0) { return { success: false, error: errors.join('; ') }; } return { success: true, data: true }; } /** * Calculate query complexity score */ function calculateQueryComplexity(query) { const factors = { joins: (query.match(/JOIN/gi) || []).length * 2, subqueries: (query.match(/SELECT.*FROM.*SELECT/gi) || []).length * 3, unions: (query.match(/UNION/gi) || []).length * 2, groupBy: query.match(/GROUP BY/gi) ? 1 : 0, having: query.match(/HAVING/gi) ? 1 : 0, distinct: query.match(/DISTINCT/gi) ? 1 : 0, aggregates: (query.match(/COUNT|SUM|AVG|MAX|MIN/gi) || []).length }; return Object.values(factors).reduce((sum, val) => sum + val, 0); } /** * Check if migration order is valid */ function validateMigrationOrder(migrations) { const applied = new Set(); for (const migration of migrations) { if (migration.dependencies) { for (const dep of migration.dependencies) { if (!applied.has(dep)) { return { success: false, error: `Migration ${migration.migrationId} depends on ${dep} which is not applied` }; } } } applied.add(migration.migrationId); } return { success: true, data: true }; } // ============================================ // Export Database Types // ============================================ exports.databaseTypes = { // Enums DatabaseType, ConnectionStatus, ComparisonOperator, IsolationLevel, TransactionStatus, SqlDataType, ReferentialAction, IndexType, IndexMethod, ConstraintType, RelationType, CascadeOption, BackupType, CompressionType, // Functions validatePoolConfig, calculateQueryComplexity, validateMigrationOrder }; //# sourceMappingURL=database-types.js.map