Skip to content

adminly-co/pg-rest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PgRest

PgRest is a REST API for managing Active Record database migrations.

Perform Active Record database migrations to manage database schema migrations.

Features

PgRest supports the following database migrations using a REST API:

  • Add table
  • Drop table
  • Add column
  • Remove column

PgRest operations are secured using an API token.

Installation

Add this line to your application's Gemfile:

gem 'pg_rest'

And then execute:

$ bundle

Mount the PgRest API by updating your config/routes.rb file:

Rails.application.routes.draw do
  ...
  mount PgRest::Engine, at: "/pg-rest"
  ...
end 

You can also configure PgRest with an initializer by creating a file at config/initializers/pg_rest.rb.

# Place file at config/initializers/pg_rest.rb

PgRest.tap |config|
  config.api_token = ENV['PG_REST_API_TOKEN']
end 

Requirements

PgRest requires Ruby on Rails and PostgreSQL, and below are recommended versions:

  • Rails 6+
  • Ruby 2.7.4+
  • Active Record supported database.

Documentation

PgRest is designed to remotely create common database migration tasks using a REST API.

Schema

Your database schema is available in order to inspect available tables and column data.

GET /pg-rest

You can inspect any specific table using the schema endpoint:

GET /pg-rest/tables/<table_name>

Create table

Create a table migration.

POST /pg-rest/tables

Parameters

Parameter Type Description
name string The name of the database table.

Drop table

Drop a database table.

DELETE /pg-rest/tables/:table_name

Parameters

Parameter Type Description
table_name string The name of the database table to drop.

Add column

Add a database column.

POST /pg-rest/tables/<table_name>/columns

Parameters

Parameter Type Description
table_name string The name of the table.
name string The column name.
type string Active Record supported database field type.
default boolean The default value. Defaults to null
array boolean The name of the database table.
foreign_key boolean Column is a foreign_key. Defaults to false.
primary_key boolean Column is a primary_key. Defaults to false.

Remove column

Remove a database column.

POST /pg-rest/tables/<table_name>/<column_name>

Parameters

Parameter Type Description
table_name string The name of the table.
column_name string The name of the column to remove.

REST API client

PgRest also supports a ruby client for handling the API requests.

You can initialize the PgRest client using:

pg_client = PgRest::Api.new(api_key: <API_KEY>, api_url: <API_URL>)

Database migrations using PgRest API client

Create table:

pg_client.create_table(table_name: <TABLE_NAME>)

Drop table:

pg_client.drop_table(table_name: <TABLE_NAME>)

Add table column:

pg_client.add_column(
  table_name: <TABLE_NAME>,
  name: <COLUMN_NAME>,
  type: <COLUMN_TYPE>,
  default: <DEFAULT_VALUE>,
  array: <IS_ARRAY>,
  primary_key: <IS_PRIMARY_KEY>,
  foreign_key: <IS_FOREIGN_KEY>,
)

Remove table column:

pg_client.remove_column(
  table_name: <TABLE_NAME>, 
  name: <COLUMN_NAME>
)

API Token Authentication

The PgRest API is secured using an API token.

# /config/initializers/pg_rest.rb

PgRest.tap do |config|
  config.api_token = ENV['PG_REST_API_TOKEN']  
  ...
end 

Contributing

Contributions are welcome by issuing a pull request at our github repository: https:/github.com/dash-api/pg-rest

License

The gem is available as open source under the terms of the MIT License.

About

REST API for managing Active Record migrations.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published