Skip to content

Commit

Permalink
remove versionColumnName support
Browse files Browse the repository at this point in the history
fix app version
update example
update action
update tests
  • Loading branch information
TimurRin committed Jan 20, 2025
1 parent ea71f4e commit e7f7946
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 40 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/cinnabar-meta-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,19 @@ jobs:
fetch-depth: 0
fetch-tags: true
submodules: recursive
- name: Check if update.cinnabarmeta exists
id: check-file
run: |
if [ -f "update.cinnabarmeta" ]; then
echo "::set-output name=file_exists::true"
else
echo "::set-output name=file_exists::false"
fi
- name: Exit if update.cinnabarmeta does not exist
if: steps.check-file.outputs.file_exists == 'false'
run: exit 0
- name: Collect pull requests
if: steps.check-file.outputs.file_exists == 'true'
id: collect-prs
uses: actions/github-script@v6
with:
Expand All @@ -48,22 +60,28 @@ jobs:
fs.writeFileSync('.cinnabar-meta-pull-requests.md', prList);
console.log(`Collected PRs:\n${prList}`);
- name: Install Cinnabar Meta
if: steps.check-file.outputs.file_exists == 'true'
run: npm i -g @cinnabar-forge/meta
- name: Set up Git user
if: steps.check-file.outputs.file_exists == 'true'
run: |
git config --global user.name ${{ vars.TECHNICAL_USER_NAME }}
git config --global user.email ${{ vars.TECHNICAL_USER_EMAIL }}
- name: Run cinnabar-meta command
if: steps.check-file.outputs.file_exists == 'true'
run: cinnabar-meta --file
- name: Push changes and tags
if: steps.check-file.outputs.file_exists == 'true'
run: |
git push origin --atomic HEAD:master --tags
- name: Read version from ./tmp/version
id: read-version
if: steps.check-file.outputs.file_exists == 'true'
run: |
VERSION=$(cat ./tmp/version)
echo "::set-output name=version::$VERSION"
- name: Create release
if: steps.check-file.outputs.file_exists == 'true'
uses: actions/create-release@v1
with:
tag_name: v${{ steps.read-version.outputs.version }}
Expand Down
28 changes: 13 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,24 @@ npm install migratta

### Usage

Example (using [Cinnabar Forge SQLite Wrapper](https://github.com/cinnabar-forge/cf-sqlite3)):

```bash
npm install @cinnabar-forge/cf-sqlite3
```

```javascript
import fs from "fs";
import cfSqlite3 from "@cinnabar-forge/cf-sqlite3";
import fs from "node:fs";
import Database from "better-sqlite3";
import cfMigrations from "migratta";

// Init sqlite3 database
const db = cfSqlite3("./default.sqlite");
const db = new Database("./default.sqlite");

// Init migrations object
const migrations = cfMigrations();
const migrations = cfMigrations("0.1.0");

// Init migrations DB 'migrations' table
await db.exec(migrations.getMigrationTableSqlCreateQuery());
db.exec(migrations.getMigrationTableSqlCreateQuery());

// Get latest migration revision
const latestRevision = await db.get(
migrations.getMigrationRevisionSqlSelectQuery()
);
const latestRevision = db
.prepare(migrations.getMigrationRevisionSqlSelectQuery())
.get();

// Initial migration (migration 0)
migrations.createMigration();
Expand Down Expand Up @@ -74,7 +68,11 @@ fs.writeFileSync("./types.ts", migrations.getTypescriptTypesFile());
const queries = migrations.getMigrationsSqlQueries(latestRevision);
console.log(queries);
for (const query of queries) {
await db.run(query.query, query.args);
if (query.args) {
db.prepare(query.query).run(...query.args);
} else {
db.exec(query.query);
}
}
```

Expand Down
2 changes: 1 addition & 1 deletion src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,5 @@ declare module "migratta" {
getTypescriptTypesFile: () => string;
};

export default function (_versionColumnName?: string): MigrationBuilder;
export default function (appVersion: string): MigrationBuilder;
}
22 changes: 13 additions & 9 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
let dialect;

let versionColumnName;
let _appVersion;

const EMPTY_OBJECT = {};

Expand All @@ -24,11 +24,15 @@ function setSqlDialect(value) {
dialect = value;
}

function createMigration(version) {
function createMigration() {
migrations.push([
{
args: [migrations.length, version || "-", Math.round(Date.now() / 1000)],
query: `INSERT INTO "migrations" ("revision", "${versionColumnName}", "date_migrated") VALUES (?, ?, ?);`,
args: [
migrations.length,
_appVersion || "-",
Math.round(Date.now() / 1000),
],
query: `INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`,
},
]);
}
Expand Down Expand Up @@ -210,11 +214,11 @@ function deleteTableColumn(tableName, columnName) {
}

function getMigrationTableSqlCreateQuery() {
return `CREATE TABLE IF NOT EXISTS "migrations" ("revision" INTEGER NOT NULL PRIMARY KEY, "${versionColumnName}" TEXT NOT NULL, "date_migrated" INTEGER NOT NULL);`;
return `CREATE TABLE IF NOT EXISTS "migrations" ("revision" INTEGER NOT NULL PRIMARY KEY, "app_version" TEXT NOT NULL, "date_migrated" INTEGER NOT NULL);`;
}

function getMigrationRevisionSqlSelectQuery() {
return `SELECT MAX(revision) as "latest_revision", "${versionColumnName}", "date_migrated" FROM "migrations";`;
return `SELECT MAX(revision) as "latest_revision", "app_version", "date_migrated" FROM "migrations";`;
}

function getMigrationsSqlQueries(latestMigration) {
Expand All @@ -223,7 +227,7 @@ function getMigrationsSqlQueries(latestMigration) {
`Last database migration: ${new Date(
latestMigration.date_migrated * 1000,
).toISOString()} (r${latestMigration.latest_revision}, v${
latestMigration[versionColumnName]
latestMigration.app_version
})`,
);
} else {
Expand Down Expand Up @@ -302,9 +306,9 @@ function wrapValue(value) {
return typeof value === "string" ? `'${value}'` : value;
}

export default function (_versionColumnName) {
export default function (appVersion) {
_appVersion = appVersion;
resetContext();
versionColumnName = _versionColumnName ?? "app_version";
return {
addSql,
addTableColumn,
Expand Down
30 changes: 15 additions & 15 deletions test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import cfMigrations from "../src/index.js";
let migrations = cfMigrations();

function createBaseMigration() {
migrations = cfMigrations("dw_version");
migrations = cfMigrations("0.1.0");
migrations.createMigration();
migrations.createTable("species", {
id: { type: "ID" },
Expand Down Expand Up @@ -36,7 +36,7 @@ describe("Static functions", function () {

describe("Adding SQL", function () {
it("should add a SQL query", function () {
migrations = cfMigrations("test_version");
migrations = cfMigrations("0.1.0");
migrations.createMigration();
migrations.addSql("SELECT 15 AS testPurpose;");
});
Expand All @@ -45,7 +45,7 @@ describe("Adding SQL", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "test_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[2].query, "SELECT 15 AS testPurpose;");
assert.strictEqual(queries[3].query, "COMMIT TRANSACTION;");
Expand All @@ -62,7 +62,7 @@ describe("Creating new table", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand Down Expand Up @@ -90,7 +90,7 @@ describe("Creating two tables and link foreign key", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand Down Expand Up @@ -119,7 +119,7 @@ describe("Creating new column", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand All @@ -128,7 +128,7 @@ describe("Creating new column", function () {
);
assert.strictEqual(
queries[3].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[3].args.length, 3);
assert.strictEqual(
Expand Down Expand Up @@ -163,7 +163,7 @@ describe("Changing existing column type", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand All @@ -172,7 +172,7 @@ describe("Changing existing column type", function () {
);
assert.strictEqual(
queries[3].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[3].args.length, 3);
assert.strictEqual(
Expand Down Expand Up @@ -206,7 +206,7 @@ describe("Renaming existing column", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand All @@ -215,7 +215,7 @@ describe("Renaming existing column", function () {
);
assert.strictEqual(
queries[3].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[3].args.length, 3);
assert.strictEqual(
Expand Down Expand Up @@ -246,7 +246,7 @@ describe("Add column with 'fillFrom' and 'coalesce' params", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand All @@ -255,7 +255,7 @@ describe("Add column with 'fillFrom' and 'coalesce' params", function () {
);
assert.strictEqual(
queries[3].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[3].args.length, 3);
assert.strictEqual(
Expand Down Expand Up @@ -294,7 +294,7 @@ describe("Delete column from table", function () {
assert.strictEqual(queries[0].query, "BEGIN TRANSACTION;");
assert.strictEqual(
queries[1].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[1].args.length, 3);
assert.strictEqual(
Expand All @@ -303,7 +303,7 @@ describe("Delete column from table", function () {
);
assert.strictEqual(
queries[3].query,
`INSERT INTO "migrations" ("revision", "dw_version", "date_migrated") VALUES (?, ?, ?);`
`INSERT INTO "migrations" ("revision", "app_version", "date_migrated") VALUES (?, ?, ?);`
);
assert.strictEqual(queries[3].args.length, 3);
assert.strictEqual(
Expand Down
1 change: 1 addition & 0 deletions update.cinnabarmeta
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
minor

0 comments on commit e7f7946

Please sign in to comment.