Skip to content

gman-au/siren

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Siren

siren

nuget

GitHub Release

Summary

It is a simple command line tool that can be installed from NuGet. When run, it will take a C# database migration context assembly, and create an entity relationship (ER) diagram in Mermaid syntax.

Usage

Installation

You can install the siren-gen tool via the following .NET command

dotnet tool install -g Gman.Siren

Running the tool

Run the command as follows:

siren-gen 
    -a [--assemblyPath] <PATH_TO_MIGRATION_ASSEMBLY> 
    -c [--connectionString] <DATABASE_CONNECTION_STRING> 
    -o [--outputPath] <PATH_TO_OUTPUT_MARKDOWN_FILE> 
    -m [--markdownAnchor] <MARKDOWN_ANCHOR>
    -f [--filterEntities] <ENTITIES_TO_INCLUDE>
    -s [--skipEntities] <ENTITIES_TO_OMIT>
    -h [--filterSchemas] <SCHEMAS_TO_INCLUDE>
    -x [--skipSchemas] <SCHEMAS_TO_SKIP>
    

Main arguments

  • PATH_TO_MIGRATION_ASSEMBLY (optional, required if connection string not provided) - this will be the location of the built .NET DLL containing the database migration you wish to map to an ER diagram.
  • DATABASE_CONNECTION_STRING (optional, required if assembly not provided) - this can be set to the connection string of a (currently online), accessible database. Siren uses the SchemaSearch library to run compatible system information schema queries using Entity Framework; this is another potential rendering option in the absence of a migration assembly.
  • PATH_TO_OUTPUT_MARKDOWN_FILE (required) - this points to a file (on your local file system) where the markdown should be generated; includes the full file name. The file does not have to be a markdown (.md) file.
  • MARKDOWN_ANCHOR (optional) - this is useful for updating README.md files that may be associated with your domain model (i.e. committed in a git repository). If the markdown anchor is specified, and the output file contains that markdown anchor (for example "### My Domain Model Diagram"), then the Siren tool will only add or replace any existing diagram it finds under that anchor, and leave the rest of the document unmodified.

Filter arguments

  • ENTITIES_TO_INCLUDE (optional) - comma-separated list of entities to filter (by name).
  • ENTITIES_TO_OMIT (optional) - comma-separated list of entities to omit (by name).
  • SCHEMAS_TO_INCLUDE (optional) - comma-separated list of entities to filter (by schema).
  • SCHEMAS_TO_OMIT (optional) - comma-separated list of entities to omit (by schema).

Example Github action

  • An example workflow file that will update the README.md of a (non-master) branch whenever a change is detected in the Migrations folder - Not.Again
  • The resulting domain model section in the README.md

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages