schema-versioner
v0.1.2
Published
A MongoDB-based schema versioning and migration tool
Downloads
8
Maintainers
Readme
schema-versioner
Introduction
Schema Versioner is a powerful Node.js package for managing and automating database schema versioning. It focuses on supporting multiple API versions simultaneously, making it an ideal tool for modern microservice-based applications.
Table of Contents
Features
- Automated Schema Versioning: Automatically detects changes in your database schema and creates versioned snapshots.
- Multi-Version API Support (Coming Soon)
- Intelligent Query Transformation (Coming Soon)
- Backwards Compatibility Testing (Coming Soon)
- Data Migration Assistance (Coming Soon)
- API Endpoint Versioning (Coming Soon)
- Documentation Generation (Coming Soon)
- Performance Impact Analysis (Coming Soon)
- Rollback Management (Coming Soon)
- Distributed Schema Management (Coming Soon)
Installation
npm install schema-versioner
Usage
Quick Start
import { SchemaVersioner } from "schema-versioner";
async function main() {
const uri = "mongodb://localhost:27017";
const dbName = "your_database_name";
const schemaVersioner = new SchemaVersioner(uri, dbName);
await schemaVersioner.connect();
try {
const changes = await schemaVersioner.detectSchemaChanges();
console.log("Detected schema changes:", changes);
const newVersion = await schemaVersioner.autoUpdateSchema();
console.log(`Schema updated to version: ${newVersion}`);
const latestSchema = await schemaVersioner.getSchema(newVersion);
console.log("Latest schema:", latestSchema);
} finally {
await schemaVersioner.close();
}
}
main().catch(console.error);
API Reference
SchemaVersioner
The main class for managing schema versions.
Constructor
new SchemaVersioner(uri: string, dbName: string)
- uri: MongoDB connection URI
- dbName: Name of the database
Methods
- connect(): Connects to the MongoDB database.
- close(): Closes the database connection.
- getCurrentVersion(): Gets the current schema version.
- createNewVersion(schema: object): Creates a new schema version.
- getSchema(version: number): Gets a specific schema version.
- getLatestVersion(): Gets the latest schema version number.
- detectSchemaChanges(): Detects changes in the current database schema.
- autoUpdateSchema(): Automatically detects changes and creates a new version if necessary.
Examples
Modifying Schema and Detecting Changes
import { MongoClient } from 'mongodb';
import { SchemaVersioner } from "schema-versioner";
async function modifyAndDetectChanges() {
const uri = 'mongodb://localhost:27017';
const dbName = 'your_database';
const client = new MongoClient(uri);
const schemaVersioner = new SchemaVersioner(uri, dbName);
try {
await client.connect();
const db = client.db(dbName);
// Modify schema
await db.collection('your_collection').updateMany(
{},
{ $set: { new_field: "default_value" } }
);
console.log("Schema modified");
// Detect and update schema version
await schemaVersioner.connect();
const changes = await schemaVersioner.detectSchemaChanges();
console.log("Detected schema changes:", changes);
const newVersion = await schemaVersioner.autoUpdateSchema();
console.log(`Schema updated to version: ${newVersion}`);
const latestSchema = await schemaVersioner.getSchema(newVersion);
console.log("Latest schema:", latestSchema);
} finally {
await client.close();
await schemaVersioner.close();
}
}
modifyAndDetectChanges().catch(console.error);
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the LICENSE