@query-doctor/core 0.0.4 → 0.1.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.
@@ -14,6 +14,7 @@ export declare class IndexOptimizer {
14
14
  private readonly config;
15
15
  static prefix: string;
16
16
  constructor(db: Postgres, statistics: Statistics, existingIndexes: IndexedTable[], config?: {
17
+ trace?: boolean;
17
18
  debug?: boolean;
18
19
  });
19
20
  run(builder: PostgresQueryBuilder, indexes: RootIndexCandidate[], beforeQuery?: (tx: PostgresTransaction) => Promise<void>): Promise<OptimizeResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"genalgo.d.ts","sourceRoot":"","sources":["../../src/optimizer/genalgo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genalgo.d.ts","sourceRoot":"","sources":["../../src/optimizer/genalgo.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import type { PgIdentifier } from "./pg-identifier";
2
3
  export declare const PostgresVersion: z.core.$ZodBranded<z.ZodString, "PostgresVersion">;
3
4
  export type PostgresVersion = z.infer<typeof PostgresVersion>;
4
5
  export interface PostgresTransaction {
@@ -32,5 +33,5 @@ export type PostgresExplainResult = {
32
33
  * Drops a disabled index. Rollsback if it fails for any reason
33
34
  * @returns Did dropping the index succeed?
34
35
  */
35
- export declare function dropIndex(tx: PostgresTransaction, index: string): Promise<boolean>;
36
+ export declare function dropIndex(tx: PostgresTransaction, index: PgIdentifier): Promise<boolean>;
36
37
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/sql/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,oDAAsC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,QAAS,SAAQ,mBAAmB;IACnD,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,CAAC,CAAC,EACP,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,uBAAuB,KAAK,QAAQ,CAAC;AAG3E,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE;QACZ,IAAI,EAAE,mBAAmB,EAAE,CAAC;KAC7B,EAAE,CAAC;CACL,CAAC;AAEF;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,mBAAmB,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAYlB"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/sql/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,eAAe,oDAAsC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,QAAS,SAAQ,mBAAmB;IACnD,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,CAAC,CAAC,EACP,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,uBAAuB,KAAK,QAAQ,CAAC;AAG3E,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE;QACZ,IAAI,EAAE,mBAAmB,EAAE,CAAC;KAC7B,EAAE,CAAC;CACL,CAAC;AAEF;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,mBAAmB,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -1,8 +1,24 @@
1
+ /**
2
+ * Represents an identifier in postgres that is subject
3
+ * to quoting rules. The {@link toString} rule behaves
4
+ * exactly like calling `select quote_ident($1)` in postgres
5
+ */
1
6
  export declare class PgIdentifier {
2
7
  private readonly value;
3
8
  private readonly quoted;
4
9
  private constructor();
10
+ /**
11
+ * Constructs an identifier from a single part (column or table name).
12
+ * When quoting identifiers like `select table.col` use {@link fromParts} instead
13
+ */
5
14
  static fromString(identifier: string): PgIdentifier;
15
+ /**
16
+ * Quotes parts of an identifier like `select schema.table.col`.
17
+ * A separate function is necessary because postgres will treat
18
+ * `select "HELLO.WORLD"` as a column name. It has to be like
19
+ * `select "HELLO"."WORLD"` instead.
20
+ */
21
+ static fromParts(...identifiers: string[]): PgIdentifier;
6
22
  toString(): string;
7
23
  private static readonly reservedKeywords;
8
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pg-identifier.d.ts","sourceRoot":"","sources":["../../src/sql/pg-identifier.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,OAAO;IAKP,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAYnD,QAAQ,IAAI,MAAM;IAOlB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CA4GrC;CACJ"}
1
+ {"version":3,"file":"pg-identifier.d.ts","sourceRoot":"","sources":["../../src/sql/pg-identifier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,OAAO;IAKP;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAYnD;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY;IASxD,QAAQ,IAAI,MAAM;IASlB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAqKrC;CACJ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@query-doctor/core",
3
3
  "private": false,
4
- "version": "0.0.4",
4
+ "version": "0.1.0",
5
5
  "description": "Core logic for Query Doctor",
6
6
  "license": "",
7
7
  "author": "Query Doctor",
@@ -25,13 +25,13 @@
25
25
  "colorette": "^2.0.20",
26
26
  "dedent": "^1.7.0",
27
27
  "pgsql-deparser": "^17.11.1",
28
- "zod": "^4.1.12"
28
+ "zod": "^4.1.13"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@pgsql/parser": "^17.5.0",
32
32
  "@query-doctor/eslint-config-custom": "*",
33
33
  "@query-doctor/typescript-config": "*",
34
- "tsup": "^8.5.0",
34
+ "tsup": "^8.5.1",
35
35
  "typescript": "^5.9.0"
36
36
  }
37
37
  }