#postgresql #migration #sql #schema #declarative #alter #ast

bin+lib declare_schema

CLI / Library for Postgres schema migrations

9 releases

new 0.0.9 Oct 28, 2024
0.0.8 Oct 28, 2024
0.0.4 Aug 3, 2024
0.0.1 Jul 9, 2024

#833 in Database interfaces

Download history 185/week @ 2024-07-10 75/week @ 2024-07-17 83/week @ 2024-07-24 318/week @ 2024-07-31 193/week @ 2024-08-07 161/week @ 2024-08-14 102/week @ 2024-08-21 28/week @ 2024-08-28 34/week @ 2024-09-04 37/week @ 2024-09-11 351/week @ 2024-09-18 250/week @ 2024-09-25 386/week @ 2024-10-02 90/week @ 2024-10-09 400/week @ 2024-10-16 725/week @ 2024-10-23

1,658 downloads per month

Apache-2.0

65KB
1.5K SLoC

declare-schema

Experiments with Rust declarative schemas

Use sqlparser-rs for SQL -> AST, then diff ASTs to generate ALTER ASTs, then output SQL.

WARNING: Alpha software, you will likely lose data with this library.

Goal

In application

Include database schema management in to Rust applications without the need for migration steps.

As a CLI

Provide a CLI tool that can generate diffs of schemas and the required ALTER statements for review to detect schema drift.

Easy development experience

When embedded in an application or with a CLI tool keep an easy SQL -> DB flow that is clear to developers with an easy to modify schema.

Current State

Limitations

CREATE EXTENSION - Can be created by name only. Cannot be DROPed.

CONSTRAINT - Cannot be changed, create a new one then drop the old one.

CREATE INDEX - Indexes cannot be ALTERed. To avoid errors in change detection/halting

  • Specify the schema name for the table when creating the index
  • Specify the method for USING that matches defaults:

example: CREATE INDEX idx_id on public.test USING BTREE (id DESC)

Dependencies

~17–32MB
~466K SLoC