https://github.com/leafo/lapis-annotate
Annotate lapis models with their schema from the database
https://github.com/leafo/lapis-annotate
Last synced: 26 days ago
JSON representation
Annotate lapis models with their schema from the database
- Host: GitHub
- URL: https://github.com/leafo/lapis-annotate
- Owner: leafo
- Created: 2015-10-31T04:42:02.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-21T19:24:13.000Z (about 1 year ago)
- Last Synced: 2025-05-12T20:25:09.207Z (26 days ago)
- Language: Lua
- Size: 19.5 KB
- Stars: 7
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# lapis-annotate
`lapis-annotate` is a [Lapis](http://leafo.net/lapis) extension that lets you
annotate your model files with their schema.## Install
```
$ luarocks install lapis-annotate
```## Usage
```
$ lapis annotate help
Usage: lapis annotate [-h] [--preload-module ]
[--format {sql,table,generate_enum_comments}] [--print]
[] ...Extract schema information from model's table to comment model
Arguments:
files Paths to model classes to annotate (eg. models/first.moon models/second.moon ...)Options:
-h, --help Show this help message and exit.
--preload-module
Module to require before annotating a model
--format {sql,table,generate_enum_comments}
What dump format to use (default: sql)
--print, -p Print the output instead of editing the model files```
Example annotating a single model:
```
$ lapis annotate models/my_model.moon
```Before:
```moon
import Model from require "lapis.db.model"class UserIpAddresses extends Model
@timestamp: true
@primary_key: {"user_id", "ip"}
```After:
```moon
import Model from require "lapis.db.model"-- Generated schema dump: (do not edit)
--
-- CREATE TABLE user_ip_addresses (
-- user_id integer NOT NULL,
-- ip character varying(255) NOT NULL,
-- created_at timestamp without time zone NOT NULL,
-- updated_at timestamp without time zone NOT NULL
-- );
-- ALTER TABLE ONLY user_ip_addresses
-- ADD CONSTRAINT user_ip_addresses_pkey PRIMARY KEY (user_id, ip);
-- CREATE INDEX user_ip_addresses_ip_idx ON user_ip_addresses USING btree (ip);
--
class UserIpAddresses extends Model
@timestamp: true
@primary_key: {"user_id", "ip"}```
## Arguments
* `--preload-module=MODULE_NAME`: load the named module with `require` before initializing config
## Notes
Only supports MoonScript and PostgreSQL at the moment
## Changes
* **2021-03-15** `1.2.1` Don't include the default `public` table shema in output
* **2018-04-03** `1.2.0` Strip any `SELECT` lines from the output
* **2017-06-14** `1.1.0` Add support for db user/password (Skiouros), add shell escaping
* **2016-01-23** `1.0.0` Initial release