Я пытаюсь создать пользователя, который является дочерним по отношению к другому пользователю. Я управляю этими отношениями, имея таблицу User, в которой хранятся все пользователи, родители и дети. Существует отдельная таблица, в которой есть только идентификатор дочернего элемента и идентификатор родительского элемента.
Моя проблема в том, что при создании дочерней учетной записи я хочу создать запись в таблице Relationship
, используя идентификатор пользователя, который будет создан. Я совсем не уверен, как я должен go об этом.
// схема. sql
CREATE TABLE "public"."Relationship" (
id SERIAL PRIMARY KEY NOT NULL,
parent_id INT NOT NULL,
FOREIGN KEY (parent_id) REFERENCES "User" (id),
child_id INT NOT NULL,
FOREIGN KEY (child_id) REFERENCES "User" (id)
)
CREATE TABLE "public"."User" (
id SERIAL PRIMARY KEY NOT NULL,
name VARCHAR(128) NOT NULL,
email VARCHAR(128) UNIQUE,
password VARCHAR(128) NOT NULL,
isChild BOOLEAN NOT NULL DEFAULT false
created_at TIMESTAMP NOT NULL DEFAULT NOW();
);
// CreateChild Мутация пользователя
export const createChildAccount = mutationField('createChildAccount', {
type: 'User',
args: {
name: stringArg({ required: true }),
password: stringArg({ required: true }),
},
resolve: async (_parent, { name, password }, ctx) => {
const userId = getUserId(ctx);
if (!userId) {
// TODO -think I might need to throw an error here
return;
}
const user = await ctx.prisma.user.create({
data: {
name,
password,
ischild: true,
child: {
create: { child_id: ???????? },
},
parent: {
connect: {id: userId}
}
},
});
return user;
},
});
Должен ли я на самом деле создать Relationship
, а затем использовать его для подключить родителя и создать ребенка?