@iota-big3/sdk-gateway
Version:
Universal API Gateway with protocol translation, intelligent routing, rate limiting, health checking, and caching
308 lines • 10.5 kB
JavaScript
;
/**
* 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