Skip to content

Instantly share code, notes, and snippets.

@sebastianbachmann
Created December 5, 2023 19:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebastianbachmann/59294babe004581294fd733954bc04b4 to your computer and use it in GitHub Desktop.
Save sebastianbachmann/59294babe004581294fd733954bc04b4 to your computer and use it in GitHub Desktop.
Running 'supabase migration up --local --debug' results in the following error message
~/Code/usebasejump-projects/feerd-usebasejump/ supabase migration up --local --debug
Supabase CLI 1.112.0
Connecting to local database...
2023/12/05 20:19:26 Connect Start: tcp 127.0.0.1:54322
2023/12/05 20:19:26 Connect Done: tcp 127.0.0.1:54322
2023/12/05 20:19:26 PG Send: {"Type":"StartupMessage","ProtocolVersion":196608,"Parameters":{"database":"postgres","user":"postgres"}}
2023/12/05 20:19:26 PG Recv: {"Type":"AuthenticationSASL","AuthMechanisms":["SCRAM-SHA-256"]}
2023/12/05 20:19:26 PG Send: {"Type":"SASLInitialResponse","AuthMechanism":"SCRAM-SHA-256","Data":"n,,n=,r=ank0/HDFqBzQDUZLqA/4SD0k"}
2023/12/05 20:19:26 PG Recv: {"Type":"AuthenticationSASLContinue","Data":"r=ank0/HDFqBzQDUZLqA/4SD0kLgjiQGky+7uFy2YVEq+emEJm,s=agVnhsUCrqFukUvrW0BUUQ==,i=4096"}
2023/12/05 20:19:26 PG Send: {"Type":"SASLResponse","Data":"c=biws,r=ank0/HDFqBzQDUZLqA/4SD0kLgjiQGky+7uFy2YVEq+emEJm,p=FTA/mRg0mbNYEG+rkSsi6nhna7eI5ISfWFEz6cSiGuw="}
2023/12/05 20:19:26 PG Recv: {"Type":"AuthenticationSASLFinal","Data":"v=9riOSiViP4QTegYmVJDkh0Q15/Tx4q0uljXdL4V/EVE="}
2023/12/05 20:19:26 PG Recv: {"Type":"AuthenticationOK"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"application_name","Value":""}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"client_encoding","Value":"UTF8"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"DateStyle","Value":"ISO, MDY"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"default_transaction_read_only","Value":"off"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"in_hot_standby","Value":"off"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"integer_datetimes","Value":"on"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"IntervalStyle","Value":"postgres"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"is_superuser","Value":"off"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"server_encoding","Value":"UTF8"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"server_version","Value":"15.1 (Ubuntu 15.1-1.pgdg20.04+1)"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"session_authorization","Value":"postgres"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"standard_conforming_strings","Value":"on"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterStatus","Name":"TimeZone","Value":"UTC"}
2023/12/05 20:19:26 PG Recv: {"Type":"BackendKeyData","ProcessID":3309,"SecretKey":1586947206}
2023/12/05 20:19:26 PG Recv: {"Type":"ReadyForQuery","TxStatus":"I"}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"lrupsc_1_0","Query":"SELECT version FROM supabase_migrations.schema_migrations ORDER BY version","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"S","Name":"lrupsc_1_0"}
2023/12/05 20:19:26 PG Send: {"Type":"Sync"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParseComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParameterDescription","ParameterOIDs":[]}
2023/12/05 20:19:26 PG Recv: {"Type":"RowDescription","Fields":[{"Name":"version","TableOID":17318,"TableAttributeNumber":1,"DataTypeOID":25,"DataTypeSize":-1,"TypeModifier":-1,"Format":0}]}
2023/12/05 20:19:26 PG Recv: {"Type":"ReadyForQuery","TxStatus":"I"}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"lrupsc_1_0","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[0]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Sync"}
2023/12/05 20:19:26 PG Recv: {"Type":"BindComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"RowDescription","Fields":[{"Name":"version","TableOID":17318,"TableAttributeNumber":1,"DataTypeOID":25,"DataTypeSize":-1,"TypeModifier":-1,"Format":0}]}
2023/12/05 20:19:26 PG Recv: {"Type":"DataRow","Values":[{"text":"20231205101945"}]}
2023/12/05 20:19:26 PG Recv: {"Type":"CommandComplete","CommandTag":"SELECT 1"}
2023/12/05 20:19:26 PG Recv: {"Type":"ReadyForQuery","TxStatus":"I"}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"CREATE SCHEMA IF NOT EXISTS supabase_migrations","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"CREATE TABLE IF NOT EXISTS supabase_migrations.schema_migrations (version text NOT NULL PRIMARY KEY)","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"ALTER TABLE supabase_migrations.schema_migrations ADD COLUMN IF NOT EXISTS statements text[]","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"ALTER TABLE supabase_migrations.schema_migrations ADD COLUMN IF NOT EXISTS name text","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Sync"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParseComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"BindComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"NoData"}
2023/12/05 20:19:26 PG Recv: {"Severity":"NOTICE","SeverityUnlocalized":"NOTICE","Code":"42P06","Message":"schema \"supabase_migrations\" already exists, skipping","Detail":"","Hint":"","Position":0,"InternalPosition":0,"InternalQuery":"","Where":"","SchemaName":"","TableName":"","ColumnName":"","DataTypeName":"","ConstraintName":"","File":"schemacmds.c","Line":128,"Routine":"CreateSchemaCommand","UnknownFields":null}
2023/12/05 20:19:26 PG Recv: {"Type":"CommandComplete","CommandTag":"CREATE SCHEMA"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParseComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"BindComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"NoData"}
2023/12/05 20:19:26 PG Recv: {"Severity":"NOTICE","SeverityUnlocalized":"NOTICE","Code":"42P07","Message":"relation \"schema_migrations\" already exists, skipping","Detail":"","Hint":"","Position":0,"InternalPosition":0,"InternalQuery":"","Where":"","SchemaName":"","TableName":"","ColumnName":"","DataTypeName":"","ConstraintName":"","File":"parse_utilcmd.c","Line":209,"Routine":"transformCreateStmt","UnknownFields":null}
2023/12/05 20:19:26 PG Recv: {"Type":"CommandComplete","CommandTag":"CREATE TABLE"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParseComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"BindComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"NoData"}
2023/12/05 20:19:26 PG Recv: {"Severity":"NOTICE","SeverityUnlocalized":"NOTICE","Code":"42701","Message":"column \"statements\" of relation \"schema_migrations\" already exists, skipping","Detail":"","Hint":"","Position":0,"InternalPosition":0,"InternalQuery":"","Where":"","SchemaName":"","TableName":"","ColumnName":"","DataTypeName":"","ConstraintName":"","File":"tablecmds.c","Line":7127,"Routine":"check_for_column_name_collision","UnknownFields":null}
2023/12/05 20:19:26 PG Recv: {"Type":"CommandComplete","CommandTag":"ALTER TABLE"}
2023/12/05 20:19:26 PG Recv: {"Type":"ParseComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"BindComplete"}
2023/12/05 20:19:26 PG Recv: {"Type":"NoData"}
2023/12/05 20:19:26 PG Recv: {"Severity":"NOTICE","SeverityUnlocalized":"NOTICE","Code":"42701","Message":"column \"name\" of relation \"schema_migrations\" already exists, skipping","Detail":"","Hint":"","Position":0,"InternalPosition":0,"InternalQuery":"","Where":"","SchemaName":"","TableName":"","ColumnName":"","DataTypeName":"","ConstraintName":"","File":"tablecmds.c","Line":7127,"Routine":"check_for_column_name_collision","UnknownFields":null}
2023/12/05 20:19:26 PG Recv: {"Type":"CommandComplete","CommandTag":"ALTER TABLE"}
2023/12/05 20:19:26 PG Recv: {"Type":"ReadyForQuery","TxStatus":"I"}
Applying migration 20231205191201_restaurants.sql...
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"CREATE TABLE IF NOT EXISTS public.restaurants\n(\n id uuid unique NOT NULL DEFAULT uuid_generate_v4() primary key,\n -- If your model is owned by an account, you want to make sure you have an account_id column\n -- referencing the account table. Make sure you also set permissions appropriately\n account_id uuid not null references accounts(id),\n\n -- begin fields generated automatically from the template inputs\n \n -- end fields generated automatically from the template inputs\n\n -- timestamps are useful for auditing\n -- Basejump has some convenience functions defined below for automatically handling these\n updated_at timestamp with time zone,\n created_at timestamp with time zone,\n -- Useful for tracking who made changes to a record\n -- Basejump has some convenience functions defined below for automatically handling these\n updated_by uuid references auth.users(id),\n created_by uuid references auth.users(id),\n)","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"-- protect the timestamps by setting created_at and updated_at to be read-only and managed by a trigger\nCREATE TRIGGER set_restaurants_timestamp\n BEFORE INSERT OR UPDATE ON public.restaurants\n FOR EACH ROW\nEXECUTE PROCEDURE basejump.trigger_set_timestamps()","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"-- protect the updated_by and created_by columns by setting them to be read-only and managed by a trigger\nCREATE TRIGGER set_restaurants_user_tracking\n BEFORE INSERT OR UPDATE ON public.restaurants\n FOR EACH ROW\nEXECUTE PROCEDURE basejump.trigger_set_user_tracking()","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"-- enable RLS on the table\nALTER TABLE public.restaurants ENABLE ROW LEVEL SECURITY","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"-- Because RLS is enabled, this table will NOT be accessible to any users by default\n-- You must create a policy for each user that should have access to the table\n-- Here are a few example policies that you may find useful when working with Basejump\n\n----------------\n-- Authenticated users should be able to read all records regardless of account\n----------------\n-- create policy \"All logged in users can select\" on public.restaurants\n-- for select\n-- to authenticated\n-- using (true);\n\n----------------\n-- Authenticated AND Anon users should be able to read all records regardless of account\n----------------\n-- create policy \"All authenticated and anonymous users can select\" on public.restaurants\n-- for select\n-- to authenticated, anon\n-- using (true);\n\n-------------\n-- Users should be able to read records that are owned by an account they belong to\n--------------\n-- create policy \"Account members can select\" on public.restaurants\n-- for select\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n\n----------------\n-- Users should be able to create records that are owned by an account they belong to\n----------------\n-- create policy \"Account members can insert\" on public.restaurants\n-- for insert\n-- to authenticated\n-- with check (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n---------------\n-- Users should be able to update records that are owned by an account they belong to\n---------------\n-- create policy \"Account members can update\" on public.restaurants\n-- for update\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n----------------\n-- Users should be able to delete records that are owned by an account they belong to\n----------------\n-- create policy \"Account members can delete\" on public.restaurants\n-- for delete\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n----------------\n-- Only account OWNERS should be able to delete records that are owned by an account they belong to\n----------------\n-- create policy \"Account owners can delete\" on public.restaurants\n-- for delete\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role(\"owner\")))\n-- );","ParameterOIDs":null}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":null,"Parameters":[],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Parse","Name":"","Query":"INSERT INTO supabase_migrations.schema_migrations(version, name, statements) VALUES($1, $2, $3)","ParameterOIDs":[25,25,1009]}
2023/12/05 20:19:26 PG Send: {"Type":"Bind","DestinationPortal":"","PreparedStatement":"","ParameterFormatCodes":[0,0,0],"Parameters":[{"text":"20231205191201"},{"text":"restaurants"},{"text":"{\"CREATE TABLE IF NOT EXISTS public.restaurants\n(\n id uuid unique NOT NULL DEFAULT uuid_generate_v4() primary key,\n -- If your model is owned by an account, you want to make sure you have an account_id column\n -- referencing the account table. Make sure you also set permissions appropriately\n account_id uuid not null references accounts(id),\n\n -- begin fields generated automatically from the template inputs\n \n -- end fields generated automatically from the template inputs\n\n -- timestamps are useful for auditing\n -- Basejump has some convenience functions defined below for automatically handling these\n updated_at timestamp with time zone,\n created_at timestamp with time zone,\n -- Useful for tracking who made changes to a record\n -- Basejump has some convenience functions defined below for automatically handling these\n updated_by uuid references auth.users(id),\n created_by uuid references auth.users(id),\n)\",-- protect the timestamps by setting created_at and updated_at to be read-only and managed by a trigger\nCREATE TRIGGER set_restaurants_timestamp\n BEFORE INSERT OR UPDATE ON public.restaurants\n FOR EACH ROW\nEXECUTE PROCEDURE basejump.trigger_set_timestamps(),-- protect the updated_by and created_by columns by setting them to be read-only and managed by a trigger\nCREATE TRIGGER set_restaurants_user_tracking\n BEFORE INSERT OR UPDATE ON public.restaurants\n FOR EACH ROW\nEXECUTE PROCEDURE basejump.trigger_set_user_tracking(),-- enable RLS on the table\nALTER TABLE public.restaurants ENABLE ROW LEVEL SECURITY,\"-- Because RLS is enabled, this table will NOT be accessible to any users by default\n-- You must create a policy for each user that should have access to the table\n-- Here are a few example policies that you may find useful when working with Basejump\n\n----------------\n-- Authenticated users should be able to read all records regardless of account\n----------------\n-- create policy \\\"All logged in users can select\\\" on public.restaurants\n-- for select\n-- to authenticated\n-- using (true);\n\n----------------\n-- Authenticated AND Anon users should be able to read all records regardless of account\n----------------\n-- create policy \\\"All authenticated and anonymous users can select\\\" on public.restaurants\n-- for select\n-- to authenticated, anon\n-- using (true);\n\n-------------\n-- Users should be able to read records that are owned by an account they belong to\n--------------\n-- create policy \\\"Account members can select\\\" on public.restaurants\n-- for select\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n\n----------------\n-- Users should be able to create records that are owned by an account they belong to\n----------------\n-- create policy \\\"Account members can insert\\\" on public.restaurants\n-- for insert\n-- to authenticated\n-- with check (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n---------------\n-- Users should be able to update records that are owned by an account they belong to\n---------------\n-- create policy \\\"Account members can update\\\" on public.restaurants\n-- for update\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n----------------\n-- Users should be able to delete records that are owned by an account they belong to\n----------------\n-- create policy \\\"Account members can delete\\\" on public.restaurants\n-- for delete\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role()))\n-- );\n\n----------------\n-- Only account OWNERS should be able to delete records that are owned by an account they belong to\n----------------\n-- create policy \\\"Account owners can delete\\\" on public.restaurants\n-- for delete\n-- to authenticated\n-- using (\n-- (account_id IN ( SELECT basejump.get_accounts_with_role(\\\"owner\\\")))\n-- );\"}"}],"ResultFormatCodes":[]}
2023/12/05 20:19:26 PG Send: {"Type":"Describe","ObjectType":"P","Name":""}
2023/12/05 20:19:26 PG Send: {"Type":"Execute","Portal":"","MaxRows":0}
2023/12/05 20:19:26 PG Send: {"Type":"Sync"}
2023/12/05 20:19:26 PG Recv: {"Type":"ErrorResponse","Severity":"ERROR","SeverityUnlocalized":"ERROR","Code":"42601","Message":"syntax error at or near \")\"","Detail":"","Hint":"","Position":960,"InternalPosition":0,"InternalQuery":"","Where":"","SchemaName":"","TableName":"","ColumnName":"","DataTypeName":"","ConstraintName":"","File":"scan.l","Line":1188,"Routine":"scanner_yyerror","UnknownFields":null}
2023/12/05 20:19:26 PG Recv: {"Type":"ReadyForQuery","TxStatus":"I"}
2023/12/05 20:19:26 PG Send: {"Type":"Terminate"}
ERROR: syntax error at or near ")" (SQLSTATE 42601)
At statement 0: CREATE TABLE IF NOT EXISTS public.restaurants
(
id uuid unique NOT NULL DEFAULT uuid_generate_v4() primary key,
-- If your model is owned by an account, you want to make sure you have an account_id column
-- referencing the account table. Make sure you also set permissions appropriately
account_id uuid not null references accounts(id),
-- begin fields generated automatically from the template inputs
-- end fields generated automatically from the template inputs
-- timestamps are useful for auditing
-- Basejump has some convenience functions defined below for automatically handling these
updated_at timestamp with time zone,
created_at timestamp with time zone,
-- Useful for tracking who made changes to a record
-- Basejump has some convenience functions defined below for automatically handling these
updated_by uuid references auth.users(id),
created_by uuid references auth.users(id),
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment