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
- Host: GitHub
- URL: https://github.com/linkorb/schemata
- Owner: linkorb
- Created: 2019-05-28T13:29:22.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-25T06:16:56.000Z (over 1 year ago)
- Last Synced: 2025-02-20T23:47:33.275Z (3 months ago)
- Language: PHP
- Size: 577 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
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.