SchemaSmith 0.0.1-alpha

This is a prerelease version of SchemaSmith.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet tool install --global SchemaSmith --version 0.0.1-alpha                
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local SchemaSmith --version 0.0.1-alpha                
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=SchemaSmith&version=0.0.1-alpha&prerelease                
nuke :add-package SchemaSmith --version 0.0.1-alpha                

SchemaSmith

SchemaSmith is a CLI tool that enables simply expressed database schemas in yaml format, lints those schemas, and generates and executes scripts based on those schemas. The first focus of this project is to provide utilities for Neo4j, but will hopefully include other databases in the future.

Installation

Simply install via nuget in your favorite IDE (it's Rider), or use the command line.

dotnet tool install -g schemasmith --prerelease

Use

The tool is invoked using the schemasmith command. There are several commands provided to assist with linting, script generation, and script execution which you can read about by invoking the help command:

schemasmith --help

But Why?

Neo4j has some tools around data modeling and script generation, but many are limited in scope or rather expensive / complex. This project aims to be a no-nonsense way to manage your schema when using Neo4j as a transactional / operational database.

Using this tool, you can easily generate idempotent scripts to update your graphs as well as ensure that appropriate labels / relationships / properties are registered ahead of time so you can better manage your app access levels (ever gone to prod with an app with editor access only to be told it can't create fresh labels?).

SchemaSmith Yaml Schema

Yo dawg, I heard you liked schemas...

But seriously, this is under development, so if you check the tests folder under Schemas you will see an example of a good schema. Since this is in flux and this library is in early stages of development, I'll save updating this section until later.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
0.0.12-alpha 250 11/3/2023
0.0.11-alpha 82 10/23/2023
0.0.10-alpha 103 9/5/2023
0.0.9-alpha 80 8/18/2023
0.0.8-alpha 223 11/15/2022
0.0.7-alpha 140 11/3/2022
0.0.6-alpha 159 11/1/2022
0.0.5-alpha 151 10/19/2022
0.0.4-alpha 119 10/6/2022
0.0.2-alpha 125 9/30/2022
0.0.1-alpha 219 9/13/2022