0.1.2 • Published 1 year ago

schema-versioner v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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

  1. Installation
  2. Features
  3. Quick Start
  4. API Reference
  5. Examples
  6. Contributing
  7. License

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

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago