Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Constraints false failure for unique index #191

Open
mrjogo opened this issue Aug 3, 2024 · 1 comment
Open

Constraints false failure for unique index #191

mrjogo opened this issue Aug 3, 2024 · 1 comment

Comments

@mrjogo
Copy link

mrjogo commented Aug 3, 2024

Using seed in conjuction with Supabase, when attempting to add two auth.users, seed is failing because of a unique index on a field that is set to the empty string in both users. However, generating the SQL separately for each of the users and then running them sequentially succeeds (plus the empty string is the default value for the fields when users are added through the web interface). Therefore, I suspect it's an issue with the seed constraint checker, not an actual failure.

seed.ts:

import { copycat } from "@snaplet/copycat";
import { createSeedClient } from "@snaplet/seed";
import dotenv from "dotenv";

dotenv.config({ path: ".env.local" });

const main = async () => {
  const seed = await createSeedClient({dryRun: process.env.DRY !== "0"});

  // Truncate all tables in the database
  await seed.$resetDatabase();

  await seed.auth_users([
    {
      instance_id: "00000000-0000-0000-0000-000000000000",
      id: copycat.uuid("[email protected]"),
      confirmation_token: "",
      confirmation_sent_at: null,
      email: "[email protected]",
      encrypted_password:
        "xxxx",
    },
    {
      instance_id: "00000000-0000-0000-0000-000000000000",
      id: copycat.uuid("[email protected]"),
      confirmation_token: "",
      confirmation_sent_at: null,
      email: "[email protected]",
      encrypted_password:
        "xxxx",
    },
  ]);

  console.log("Database seeded successfully!");

  process.exit();
};

main();

The error:

% npx tsx seed.ts
my_app/node_modules/@snaplet/seed/dist/src/core/plan/constraints.js:155
                throw new Error([
                      ^


Error: Unique constraint "confirmation_token_idx" violated for model "auth_users" on fields (confirmation_token) with values ()
Seed: 0/auth_users/1
Model data: {
  "id": "51a6658d-732d-522f-8015-aad47c97271c",
  "aud": "Es ere desid potius quem, partitia consed allictorum si tamquam.",
  "role": "Eas victi sapiens cum effecta, quos placet quisquam circo ant.",
  "email_confirmed_at": "2020-11-03T10:26:36.000Z",
  "invited_at": "2020-06-06T17:31:39.000Z",
  "recovery_token": "Hoc vult vix dolorat quod susciplinguam sit dolordiamur.",
  "recovery_sent_at": "2020-05-13T04:44:39.000Z",
  "email_change_token_new": "Dolorum per dolore aliosae et.",
  "email_change": "Copulsa meliorum quis es saepe eorumquam inscientiam, te vero cum etiam adquiescerte sapiens desid possimis.",
  "email_change_sent_at": "2020-11-15T22:57:47.000Z",
  "last_sign_in_at": "2020-04-08T15:30:17.000Z",
  "raw_app_meta_data": {
    "Facet": "Abitur et"
  },
  "raw_user_meta_data": {
    "Sensu": "Repellere stoicosopho"
  },
  "is_super_admin": true,
  "created_at": "2020-12-28T12:15:12.000Z",
  "updated_at": "2020-12-28T11:17:59.000Z",
  "phone_confirmed_at": "2020-10-06T10:01:38.000Z",
  "phone_change_sent_at": "2020-07-23T18:47:30.000Z",
  "banned_until": "2020-06-02T17:55:35.000Z",
  "reauthentication_sent_at": "2020-03-27T02:29:07.000Z",
  "deleted_at": "2020-11-19T11:00:25.000Z",
  "instance_id": "00000000-0000-0000-0000-000000000000",
  "confirmation_token": "",
  "confirmation_sent_at": null,
  "email": "[email protected]",
  "encrypted_password": "xxxx"
}
    at checkConstraints (my_app/node_modules/@snaplet/seed/dist/src/core/plan/constraints.js:155:23)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Plan.generateModel (my_app/node_modules/@snaplet/seed/dist/src/core/plan/plan.js:219:13)
    at Plan.generate (my_app/node_modules/@snaplet/seed/dist/src/core/plan/plan.js:347:9)
    at Plan.run (my_app/node_modules/@snaplet/seed/dist/src/core/plan/plan.js:355:23)
    at main (my_app/supabase/seed.ts:19:3)

Node.js v20.16.0

The index:

CREATE UNIQUE INDEX confirmation_token_idx ON auth.users USING btree (confirmation_token) WHERE ((confirmation_token)::text !~ '^[0-9 ]*$'::text)
@itoonx
Copy link

itoonx commented Sep 24, 2024

i got the same error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants