mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 14:15:24 +00:00
fix: finish 2.9.0 plugin moves and get every check green
This commit is contained in:
1 parent
8c1e02af89
commit
6489b62ece
335 files changed
+29878
-17749
No files matched your search
@@ -5,7 +5,9 @@ const require = createRequire(import.meta.url);
|
||||
const { transform, collectKeyColumns } =
|
||||
require("./generate-dialect-schema.cjs") as {
|
||||
transform: (source: string, dialect: "postgres" | "mysql") => string;
|
||||
collectKeyColumns: (source: string) => Set<string>;
|
||||
collectKeyColumns: (source: string) => {
|
||||
keyed: Map<string, Set<string>>;
|
||||
};
|
||||
};
|
||||
|
||||
const SOURCE = `import { sqliteTable, text, integer, real } from "drizzle-orm/sqlite-core";
|
||||
@@ -36,21 +38,36 @@ export const folders = sqliteTable("folders", {
|
||||
`;
|
||||
|
||||
describe("collectKeyColumns", () => {
|
||||
it("finds columns that must be indexable", () => {
|
||||
const keyed = collectKeyColumns(SOURCE);
|
||||
it("finds columns that must be indexable, per table", () => {
|
||||
const { keyed } = collectKeyColumns(SOURCE);
|
||||
|
||||
// primary key, unique, and both ends of the foreign key
|
||||
expect(keyed.has("id")).toBe(true);
|
||||
expect(keyed.has("sync_id")).toBe(true);
|
||||
expect(keyed.has("user_id")).toBe(true);
|
||||
expect(keyed.get("users")?.has("id")).toBe(true);
|
||||
expect(keyed.get("folders")?.has("sync_id")).toBe(true);
|
||||
expect(keyed.get("folders")?.has("user_id")).toBe(true);
|
||||
});
|
||||
|
||||
it("leaves ordinary strings alone", () => {
|
||||
const keyed = collectKeyColumns(SOURCE);
|
||||
const { keyed } = collectKeyColumns(SOURCE);
|
||||
|
||||
expect(keyed.has("username")).toBe(false);
|
||||
expect(keyed.has("name")).toBe(false);
|
||||
expect(keyed.has("cert")).toBe(false);
|
||||
expect(keyed.get("users")?.has("username")).toBe(false);
|
||||
expect(keyed.get("folders")?.has("name")).toBe(false);
|
||||
expect(keyed.get("folders")?.has("cert")).toBe(false);
|
||||
});
|
||||
|
||||
it("does not key a column because another table indexes the same name", () => {
|
||||
const { keyed } = collectKeyColumns(`
|
||||
export const a = sqliteTable("a", {
|
||||
label: text("label"),
|
||||
}, (table) => [index("idx_a_label").on(table.label)]);
|
||||
|
||||
export const b = sqliteTable("b", {
|
||||
label: text("label"),
|
||||
});
|
||||
`);
|
||||
|
||||
expect(keyed.get("a")?.has("label")).toBe(true);
|
||||
expect(keyed.get("b")?.has("label")).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user