erbuilder

command module
v0.7.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2020 License: MIT Imports: 1 Imported by: 0

README

erbuilder

GoDoc version golang-version


Go Report Card Codacy Badge Codacy Badge master-actions Actions Status .github/workflows/release-actions.yaml

The purpose of this tool is to parse a file or a list of files containing the mappping against the database and generate an .er file describing the database modeling.

Installation

Installing via go get

In order to be able to use this you simply have to :

go get -u github.com/eujoy/erbuilder
Installing via brew

In order to install this tool via brew you simply have to :

brew tap eujoy/erbuilder
brew install erbuilder

Definition of commands

There is a command called generate which actually retrieves the details from the provided files or files under directory and generates the respective .er file based on the definition of the structs in those files.

NAME:
   main generate - Generate the .er file based on the provided structures.

USAGE:
   main generate [command options] [arguments...]

OPTIONS:
   --common_field value, -c value         Common field for all the tables which do not have the provided tag in place.
   --directory value, -d value            Directory to retrieve the files from.
   --file_list value, -l value            List of files to parse.
   --id_field value                       Id field to be used for all the tables.
   --output_filename value, --of value    Define the generated output filename (will be used for both the .er and the image file). (default: "er-diagram")
   --output_path value, -o value          The path were to store the .er file. (default: ".")
   --tag value, -t value                  Tag value to consume from the structs. (default: "db")
   --title value                          Title to be included in the exported image. (default: "Database Schema")
   --column_name_case value, --cnc value  Define the case definition for the column names. (Allowed values : [snake_case camelCase screaming_snake_case kebab_case]) (default: "snake_case")
   --table_name_case value, --tnc value   Define the case definition for the table names. (Allowed values : [snake_case camelCase screaming_snake_case kebab_case]) (default: "snake_case")
   --table_in_plural, --tp                Define whether the table name should be in plural. (default: false)
   --help, -h                             show help (default: false)

How to use

To generate a new .er file with the database models, a command like the following needs to be executed :

erbuilder generate --directory "./test/" --output_path "./test/" --output_filename "example-er-diagram" --id_field "id" --tag "db" --title "example_db"

or by using go run in the root folder of the project :

go run main.go generate --directory "./test/" --output_path "./test/" --output_filename "example-er-diagram" --id_field "id" --tag "db" --title "example_db"

Documentation

Overview

Package erbuilder reads across a list of files and after retrieving the structs found in there, it generates a '.er' file based on a specific tag.

Installation can be done by running :

go get -u github.com/eujoy/erbuilder

To use the tool and generate a .er file, the following command needs to be executed (change values accordingly) :

erbuilder generate --directory "./test/" --output_path "./test/" --output_filename "example-er-diagram" --id_field "id" --tag "db" --title "example_db"

To install and use via homebrew, simply use the following commands :

brew tap eujoy/erbuilder
brew install erbuilder

Also, this can be used as an external package in any service. To use this tool as part of your project, you need to do something like the following :

import (
	"github.com/eujoy/erbuilder/internal/app/service"
	"github.com/eujoy/erbuilder/internal/domain"
)

// Config describes the configuration of the service.
type Config struct {
	Settings settings
}

type settings struct {
	AllowedColumnNameCaseValues []string
	AllowedTableNameCaseValues  []string
}

func main() {
	cfg := Config{
		Settings: settings{
			AllowedColumnNameCaseValues: []string{"snake_case", "camelCase", "screaming_snake_case", "kebab_case"},
			AllowedTableNameCaseValues:  []string{"snake_case", "camelCase", "screaming_snake_case", "kebab_case"},
		},
	}

	// Specify your values for the options.
	options := domain.Options{
		Directory:      "./../../../test/",
		IDField:        "id",
		FileList:       cli.StringSlice{},
		OutputFilename: "test-example-er-diagram",
		OutputPath:     "./../../../test",
		Tag:            "db",
		Title:          "example_db",
		ColumnNameCase: "snake_case",
		TableNameCase:  "snake_case",
		Config:         cfg,
	}
	actualService := service.New(options)
	_ = actualService.Generate()
}

For more details, please visit : https://github.com/eujoy/erbuilder.

Directories

Path Synopsis
cmd
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL