An open API service indexing awesome lists of open source software.

https://github.com/linkorb/schemata

Schemata: database schema powertools
https://github.com/linkorb/schemata

Last synced: 3 months ago
JSON representation

Schemata: database schema powertools

Awesome Lists containing this project

README

        

LinkORB Schema Annotation Tool
==============================

## Installation

You can use the included generator tools using the following steps

* Make you have `composer` is installed (https://getcomposer.org/download/)
* Add the dependency: `composer require linkorb/schemata`
* Install the dependencies by running `composer install`. This will download all libraries we need in the `vendor/` subdirectory

## Usage

### General CLI Usage

`vendor/bin/schemata `

### Schema HTML documentation

Type the following command to generate HTML documentation based on the schema files:

`vendor/bin/schemata generate:html-doc /path/to/schema /path/to/build/html-doc`

This will parse the schema defined in the `schema/` directory, and generate a complete set of HTML documentation in to the `build/html-doc` directory.

You can browse the documentation by opening the `index.html` file in a web-browser.

open `build/html-doc/index.html`

### GraphQL schema definitions

Type the following command to generate [GraphQL schema definitions](https://graphql.org/learn/schema/) based on the schema files:

`vendor/bin/schemata generate:graphql-schema /path/to/schema /path/to/build/graphql [--bundle]`

This will parse the schema defined in the `schema/` directory, and generate a complete set of GraphQL types in to the `build/graphql` directory. Passing the `--bundle` flag will create a single bundled file instead of one per type

### Context schema definitions

Type the following command to generate [context schema definitions](https://github.com/linkorb/context) based on the schema files:

`vendor/bin/schemata generate:context-schema /path/to/schema /path/to/build/context [--bundle]`

This will parse the schema defined in the `schema/` directory, and generate a complete set of GraphQL types in to the `build/context` directory. Passing the `--bundle` flag will create a single bundled file instead of one per type

### Schema Validation

`vendor/bin/schemata schemata:validate /path/to/schema`

A service that scans through all tables and columns, performs validation. The console command returns `0` if no issues, returns `-1` if issues exist.

### Schema Diff

`vendor/bin/schemata schemata:diff /path/to/schemaOne /path/to/schemaTwo`

A console command that:

* loads 2 schemas;
* scans throught all tables+columns, and build an array of differences (added+removed tables and columns);
* outputs the list of differences to the console.

### Inline Usage Example

```php
getSchema());

$service->parseSchema();

$schema = $service->getSchema();

echo
'Number of tables: ' . count($schema->getTables()) . PHP_EOL,
'Number of codelists: ' . count($schema->getCodelists()) . PHP_EOL
;

```

## Conventional Commits

This repository is using [Conventional Commits](https://www.conventionalcommits.org/)

Please run `npm install` at least once, in order to install the appropriate tooling and git hooks (this helps you to follow the conventions by linting them before actually committing).

In short: you should prefix your commit titles with the correct type (i.e. `feat: my new cool feature`). This helps to create clear commit histories, automatically handles semver, tagging and CHANGELOG.md generation.

If you'd like to reference a card in our planning system, simply add a `#123` to the end of your commit title. The card will be correctly linked from the changelogs etc.

To publish a new release, simply run `npm run publish`. This will update the changelog, and manifests like composer.json, package.json, etc to a new tag. The tag follows Semver, and is selected based on your commit types since the last release.