@intentius/sql-yodeler 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,28 @@
1
+ <p align="center"><img src="docs-site/public/brand/hat-160.png" width="160" height="148" alt="SQL Yodeler's logo, a pixel-art cowboy hat with a database on it"></p>
2
+
1
3
  # SQL Yodeler
2
4
 
3
- Schema management and migrations for ClickHouse and Postgres, on chant's `sql` lexicon.
5
+ Declarative schema migrations for ClickHouse and Postgres. Declare your schema in TypeScript, and SQL Yodeler works out the change: it plans and applies it against the live database, or writes it as a versioned migration, behind an approval bound to the plan. Built on chant's `sql` lexicon.
6
+
7
+ ```ts
8
+ // src/schema.ts
9
+ import { database, table } from "@intentius/chant-lexicon-sql/clickhouse";
10
+
11
+ export const db = database`CREATE DATABASE events ENGINE = Atomic`;
12
+
13
+ export const events = table`
14
+ CREATE TABLE ${db}.events (
15
+ id UInt64,
16
+ kind LowCardinality(String),
17
+ at DateTime
18
+ )
19
+ ENGINE = MergeTree
20
+ ORDER BY (kind, at)`;
21
+ ```
22
+
23
+ Each export is one object in the database's own DDL; `${db}` is a reference, so the build orders the objects and checks them against a pinned server's catalog. [Declaring the schema](docs/schema.md) has the whole form, both dialects.
4
24
 
5
- SQL Yodeler is built on [chant](https://www.npmjs.com/package/@intentius/chant), a declarative infrastructure-as-code toolkit in TypeScript. You need chant's CLI (`@intentius/chant` on npm) for three things only: `chant init` to make a project from a template, `chant approve` to approve a plan, and `chant emulator up` for a local database. Run it as `npx @intentius/chant@latest` before the project exists, and as `npx chant` inside it, where `npm install` put it.
25
+ SQL Yodeler is built on [chant](https://intentius.io/chant/), a declarative infrastructure-as-code toolkit in TypeScript. You need chant's CLI (`@intentius/chant` on npm) for two things only: `chant init` to make a project from a template, and `chant emulator up` for a local database. Run the CLI as `npx @intentius/chant@latest` before the project exists, and as `npx chant` inside it, where `npm install` put it. You approve a plan with `yodel approve`, which records chant's approval for you.
6
26
 
7
27
  ## Getting started
8
28
 
@@ -18,7 +38,7 @@ export DEV_CLICKHOUSE_READER_USER=reader DEV_CLICKHOUSE_READER_PASSWORD= DEV_CLI
18
38
  npx yodel new init && npx yodel lint
19
39
  git add -A && git commit -m "feat: the first migration"
20
40
  YODEL_CREDENTIALS=writer npx yodel apply dev # stops at the approval
21
- npx chant approve migrate-dev approve-migrate-dev --plan "$(npx yodel apply dev --digest)"
41
+ npx yodel approve dev # shows the plan; type dev to approve
22
42
  YODEL_CREDENTIALS=writer npx yodel apply dev
23
43
  ```
24
44
 
@@ -26,7 +46,7 @@ yodel refuses an environment whose reader and writer are one user, so dev reads
26
46
 
27
47
  For Postgres, use `templates/postgres` with `--param name=app-schema --param schema=app`.
28
48
 
29
- Each template gives `chant.config.ts` with a profile per environment (`dev`, `prod`), `yodel.config.ts`, a migrate Op per environment (`yodel apply` behind a gate bound to the plan digest), a `WatchOp` per environment for drift on a schedule, and pipelines for GitHub Actions, GitLab CI and Forgejo Actions: `yodel lint` and the plan comment on pull requests with read-only credentials, `yodel apply` on a push to main with the writer, and the drift watch on its cron with the reader. `yodel ci` (`npm run ci`) renders the pipelines from the installed package, so upgrading yodel and rendering again brings its pipeline fixes, and the project's own jobs, declared in a module `yodel.config.ts` `ci.jobs` names, are kept. The parameters are in each template's `chant.template.json`; the template's README covers the credentials and each forge's setup.
49
+ Each template gives `chant.config.ts` with a profile per environment (`dev`, `prod`), `yodel.config.ts`, a migrate Op per environment (`yodel apply` behind a gate bound to the plan digest), a `WatchOp` per environment for drift on a schedule, and pipelines for GitHub Actions, GitLab CI and Forgejo Actions: `yodel lint` and the plan comment on pull requests with read-only credentials, `yodel apply` on a push to main with the writer, and the drift watch on its cron with the reader. `yodel ci` (`npm run ci`) renders the pipelines from the installed package, so upgrading yodel and rendering again brings its pipeline fixes, and the project's own jobs, declared in a module `yodel.config.ts` `ci.jobs` names, are kept. The parameters are in each template's `chant.template.json`; the template's README covers the credentials and each forge's setup, and so does [Setting up each forge](docs/forges.md).
30
50
 
31
51
  ## Documentation
32
52
 
@@ -89,7 +109,7 @@ export const op = Op({
89
109
  });
90
110
  ```
91
111
 
92
- `yodel apply prod` stops at the gate and prints `chant approve migrate-prod approve-migrate-prod --plan <digest>`; approve (inside the project, `npx chant approve ...`), then run it again. `yodel apply prod --plan` prints the pending migrations and the digest without applying. Running `chant run migrate-prod` directly needs `yodel` on PATH.
112
+ `yodel apply prod` stops at the gate; approve at a terminal with `npx yodel approve prod`, then run it again. A script, which has no terminal to ask, runs the `chant approve migrate-prod approve-migrate-prod --plan <digest>` command that `yodel apply` prints instead. `yodel apply prod --plan` prints the pending migrations and the digest without applying. Running `chant run migrate-prod` directly needs `yodel` on PATH.
93
113
 
94
114
  ## yodel lint
95
115
 
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SQL Yodeler's logo, the hat, for the pages yodel writes (yodel report --html
3
+ * and yodel docs). It is inlined as a PNG data URI, drawn at twice the size it
4
+ * is shown, so each page stays one self-contained file.
5
+ */
6
+ export declare const HAT_PNG = "data:image/png;base64,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";
7
+ /** The favicon link a page's head carries. */
8
+ export declare const HAT_ICON = "<link rel=\"icon\" type=\"image/png\" href=\"data:image/png;base64,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\">";
9
+ /** The hat beside a page's heading; decorative, since the heading names the page. */
10
+ export declare const HAT_IMG = "<img class=\"hat\" src=\"data:image/png;base64,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\" width=\"52\" height=\"48\" alt=\"\">";
11
+ /** CSS for a heading that leads with the hat. */
12
+ export declare const HAT_CSS = "h1.brand{display:flex;align-items:center;gap:12px}.hat{flex:none}";
package/dist/brand.js ADDED
@@ -0,0 +1,14 @@
1
+ // Written by scripts/brand.py; run it again rather than editing this file.
2
+ /**
3
+ * SQL Yodeler's logo, the hat, for the pages yodel writes (yodel report --html
4
+ * and yodel docs). It is inlined as a PNG data URI, drawn at twice the size it
5
+ * is shown, so each page stays one self-contained file.
6
+ */
7
+ export const HAT_PNG = "data:image/png;base64,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";
8
+ /** The favicon link a page's head carries. */
9
+ export const HAT_ICON = `<link rel="icon" type="image/png" href="${HAT_PNG}">`;
10
+ /** The hat beside a page's heading; decorative, since the heading names the page. */
11
+ export const HAT_IMG = `<img class="hat" src="${HAT_PNG}" width="52" height="48" alt="">`;
12
+ /** CSS for a heading that leads with the hat. */
13
+ export const HAT_CSS = "h1.brand{display:flex;align-items:center;gap:12px}.hat{flex:none}";
14
+ //# sourceMappingURL=brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../src/brand.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,wqmBAAwqmB,CAAC;AAEhsmB,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,2CAA2C,OAAO,IAAI,CAAC;AAE/E,qFAAqF;AACrF,MAAM,CAAC,MAAM,OAAO,GAAG,yBAAyB,OAAO,kCAAkC,CAAC;AAE1F,iDAAiD;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,mEAAmE,CAAC"}
@@ -19,6 +19,10 @@
19
19
  * The apply pipeline's waves are yodel.config.ts `waves`, in order; without
20
20
  * it, one wave per environment in profile order, each with gate `always`.
21
21
  *
22
+ * yodel.config.ts `ci.apply: false` (#175) leaves out the apply pipeline and
23
+ * the waves spec on every forge: the pull request checks and the watches
24
+ * remain, and no job holds a writer.
25
+ *
22
26
  * Three pipelines per forge, each declared with chant: yodel-pr with the
23
27
  * github lexicon's Workflow, Job and Step (Forgejo renders the same
24
28
  * declaration through the forgejo lexicon's dialect) and the gitlab
@@ -68,7 +72,7 @@
68
72
  * in that image instead, which carries node, yodel, chant and the lexicons
69
73
  * on PATH, and no job runs `npm ci` ({@link Toolchain}).
70
74
  */
71
- import { type ApprovalMode, type CiLogin } from "../config/define.js";
75
+ import { type ApprovalMode, type CiLogin, type WaveGate } from "../config/define.js";
72
76
  import { type CloudToken, type Role } from "../credentials.js";
73
77
  import type { Declarable } from "@intentius/chant/declarable";
74
78
  export type Forge = "github" | "gitlab" | "forgejo";
@@ -127,6 +131,8 @@ export interface Environments {
127
131
  credentials?: Record<string, EnvCredentials>;
128
132
  /** yodel.config.ts `ci.login` (#132): the cloud login a job runs before yodel when a role it holds is cloud-minted. */
129
133
  login?: CiLogin;
134
+ /** yodel.config.ts `ci.apply: false` (#175): no apply pipeline, so no job holds a writer. */
135
+ apply?: false;
130
136
  }
131
137
  /** What a job holding one role of an environment needs: the variables it reads, and the cloud identity its token source mints from. */
132
138
  export interface RoleNeeds {
@@ -233,8 +239,6 @@ export declare function actionsReview(forge: Actions, envs_: Environments): Rend
233
239
  export declare const GITLAB_WATCH_FILE = ".gitlab/yodel-watch.gitlab-ci.yml";
234
240
  export declare const GITLAB_APPLY_FILE = ".gitlab/yodel-apply.gitlab-ci.yml";
235
241
  export declare function gitlabPipeline(envs_: Environments): RenderedFile;
236
- /** When a wave waits for an approval; yodel.config.ts `waves[].gate`. */
237
- export type WaveGate = "always" | "on-destructive" | "never";
238
242
  export interface Wave {
239
243
  env: string;
240
244
  gate: WaveGate;
package/dist/ci/render.js CHANGED
@@ -19,6 +19,10 @@
19
19
  * The apply pipeline's waves are yodel.config.ts `waves`, in order; without
20
20
  * it, one wave per environment in profile order, each with gate `always`.
21
21
  *
22
+ * yodel.config.ts `ci.apply: false` (#175) leaves out the apply pipeline and
23
+ * the waves spec on every forge: the pull request checks and the watches
24
+ * remain, and no job holds a writer.
25
+ *
22
26
  * Three pipelines per forge, each declared with chant: yodel-pr with the
23
27
  * github lexicon's Workflow, Job and Step (Forgejo renders the same
24
28
  * declaration through the forgejo lexicon's dialect) and the gitlab
@@ -71,7 +75,7 @@
71
75
  import { existsSync } from "node:fs";
72
76
  import { join, resolve } from "node:path";
73
77
  import { pathToFileURL } from "node:url";
74
- import { APPROVAL_MODES } from "../config/define.js";
78
+ import { APPROVAL_MODES, WAVE_GATES, waveGateHint } from "../config/define.js";
75
79
  import { audience, CLOUD_OF, jobLogins, loginSteps } from "./login.js";
76
80
  import { RECORD_PLANS_ENV } from "../approval-mode/index.js";
77
81
  import { cloudToken, credentialsOf, roleVariables } from "../credentials.js";
@@ -98,6 +102,8 @@ const CHECKOUT = "actions/checkout@v7";
98
102
  const SETUP_NODE = "actions/setup-node@v7";
99
103
  /** DEV for dev: the prefix of an environment's variables. */
100
104
  export const prefixOf = (env) => env.toUpperCase().replace(/[^A-Z0-9]/g, "_");
105
+ /** Whether the apply pipeline is rendered: unless yodel.config.ts `ci.apply` is false. */
106
+ const rendersApply = (envs) => envs.apply !== false;
101
107
  /** DEV_CLICKHOUSE for dev on ClickHouse: what an environment's variables start with. */
102
108
  export const variablePrefix = (env, dialect) => `${prefixOf(env)}_${dialect.toUpperCase()}`;
103
109
  /** The variables a job reading `env` holds: the URL and the reader (the variables credentials() names; none for a token-minted password). */
@@ -461,9 +467,11 @@ export function gitlabPipeline(envs_) {
461
467
  }
462
468
  for (const [name, job] of Object.entries(ownJobs(own?.gitlab, Object.fromEntries(jobs), "gitlab")))
463
469
  jobs.set(name, job);
470
+ const apply = rendersApply(envs_);
464
471
  const variables = envs.flatMap((env) => {
465
472
  const creds = envs_.credentials?.[env];
466
- const writer = writerVariables(env, dialect, creds).slice(1);
473
+ // With ci.apply: false no job holds a writer, so no writer variable is set.
474
+ const writer = apply ? writerVariables(env, dialect, creds).slice(1) : [];
467
475
  return [
468
476
  `# ${readerVariables(env, dialect, creds).join(", ")}: not protected (merge request`,
469
477
  "# pipelines run on unprotected branches), masked; no environment scope.",
@@ -475,8 +483,15 @@ export function gitlabPipeline(envs_) {
475
483
  const header = [
476
484
  ...HEADER,
477
485
  "#",
478
- "# Merge requests: lint and the plan comment (stage review). A push to the",
479
- `# default branch: the apply waves, one stage each, in ${GITLAB_APPLY_FILE}.`,
486
+ ...(apply
487
+ ? [
488
+ "# Merge requests: lint and the plan comment (stage review). A push to the",
489
+ `# default branch: the apply waves, one stage each, in ${GITLAB_APPLY_FILE}.`,
490
+ ]
491
+ : [
492
+ "# Merge requests: lint and the plan comment (stage review). No apply",
493
+ "# pipeline (yodel.config.ts ci.apply: false): migrations are applied outside CI.",
494
+ ]),
480
495
  `# The drift watches are in ${GITLAB_WATCH_FILE} (stage ops).`,
481
496
  "#",
482
497
  "# GitLab gives every job the project's CI/CD variables unless a variable is",
@@ -495,25 +510,30 @@ export function gitlabPipeline(envs_) {
495
510
  "# the plan comment and the drift watch's tracking issue; CI_JOB_TOKEN",
496
511
  "# cannot write merge request notes or issues.",
497
512
  ]),
498
- "# The jobs that hold no writer read with the reader: chant.config.ts picks an",
499
- "# environment's writer only under YODEL_CREDENTIALS=writer:<env>, which only",
500
- "# that environment's wave job sets.",
501
- ...identityHeader("gitlab", cloudsOf(envs_, envs.flatMap((env) => [...planRoles(waves, env), ...waveRoles(waves, env), [env, "reader"]]))),
513
+ ...(apply
514
+ ? [
515
+ "# The jobs that hold no writer read with the reader: chant.config.ts picks an",
516
+ "# environment's writer only under YODEL_CREDENTIALS=writer:<env>, which only",
517
+ "# that environment's wave job sets.",
518
+ ]
519
+ : ["# Every job reads with the reader; none holds a writer."]),
520
+ ...identityHeader("gitlab", cloudsOf(envs_, envs.flatMap((env) => [...planRoles(waves, env), ...(apply ? waveRoles(waves, env) : []), [env, "reader"]]))),
502
521
  ];
503
522
  // The stages this file's jobs use (review, then any the project's own jobs add), then the apply file's waves and the watch file's ops.
504
523
  // A pr-review wave (#48) adds the merge request job that records the plans, in chant's stage "plans".
505
524
  const jobStages = [...jobs.values()].map((job) => job.props?.stage).filter((stage) => typeof stage === "string");
506
- const plans = waves.some((w) => w.approval === "pr-review") ? [PLANS_STAGE] : [];
525
+ // ci.apply: false (#175): no apply file, so neither its include nor its stages.
526
+ const plans = apply && waves.some((w) => w.approval === "pr-review") ? [PLANS_STAGE] : [];
527
+ const applyStages = apply ? [...plans, ...waveStages(waves), ...(envs_.resume ? [RESUME_STAGE] : [])] : [];
507
528
  const pipeline = new GitLabPipeline({
508
529
  comment: asComment(header),
509
- include: [{ local: GITLAB_APPLY_FILE }, { local: GITLAB_WATCH_FILE }],
510
- stages: [...new Set([...jobStages, ...plans, ...waveStages(waves), ...(envs_.resume ? [RESUME_STAGE] : []), "ops"])],
530
+ include: [...(apply ? [{ local: GITLAB_APPLY_FILE }] : []), { local: GITLAB_WATCH_FILE }],
531
+ stages: [...new Set([...jobStages, ...applyStages, "ops"])],
511
532
  variables: { GIT_DEPTH: "0" },
512
533
  });
513
534
  const entities = new Map([["pipeline", pipeline], ["workflow", workflow], ...jobs]);
514
535
  return { path: ".gitlab-ci.yml", content: oneFile("gitlab", gitlabSerializer.serialize(entities)) };
515
536
  }
516
- const WAVE_GATES = ["always", "on-destructive", "never"];
517
537
  /** The environment `env`'s wave requires, as a list. */
518
538
  const requiredOf = (waves, env) => {
519
539
  const r = waves.find((w) => w.env === env)?.requires;
@@ -744,7 +764,7 @@ export async function readWaves(dir, envs) {
744
764
  throw new Error(`yodel.config.ts: waves[${String(i)}].env ${env} is not an environment (${envs.join(", ")})`);
745
765
  const gate = (w.gate ?? "always");
746
766
  if (!WAVE_GATES.includes(gate))
747
- throw new Error(`yodel.config.ts: waves[${String(i)}].gate ${String(w.gate)} is not ${WAVE_GATES.join(", ")}`);
767
+ throw new Error(`yodel.config.ts: waves[${String(i)}].gate ${String(w.gate)} is not ${WAVE_GATES.join(", ")}${waveGateHint(w.gate)}`);
748
768
  const requires = w.requires === false ? undefined : w.requires === undefined ? (i > 0 ? String(all[i - 1]?.env) : undefined) : typeof w.requires === "string" ? w.requires : JSON.stringify(w.requires);
749
769
  if (requires !== undefined && !envs.includes(requires))
750
770
  throw new Error(`yodel.config.ts: waves[${String(i)}].requires ${requires} is not an environment (${envs.join(", ")})`);
@@ -912,6 +932,7 @@ export async function environments(dir) {
912
932
  ...(ci?.image ? { image: ci.image } : {}),
913
933
  ...(ci?.resume ? { resume: { schedule: ci.resume.schedule } } : {}),
914
934
  ...(ci?.login ? { login: ci.login } : {}),
935
+ ...(ci?.apply === false ? { apply: false } : {}),
915
936
  };
916
937
  }
917
938
  /** The roles of each environment whose profile is made with credentials(). */
@@ -981,7 +1002,8 @@ export function forgeOf(path) {
981
1002
  export async function render(dir) {
982
1003
  const envs = await environments(dir);
983
1004
  const forges = envs.forges ?? FORGES;
984
- const files = [...review(envs), ...(await applyPipelines(dir, envs)), ...(await watchPipelines(dir, envs))];
1005
+ // ci.apply: false (#175): no waves spec and no apply pipeline on any forge.
1006
+ const files = [...review(envs), ...(rendersApply(envs) ? await applyPipelines(dir, envs) : []), ...(await watchPipelines(dir, envs))];
985
1007
  return files.filter((f) => {
986
1008
  const forge = forgeOf(f.path);
987
1009
  return forge === undefined || forges.includes(forge);