Jo Sprague
03/04/2019, 2:42 AMasync createCheckIn(parent, { title, location }, context) {
const userId = getUserId(context);
const { geonameId, ...rest } = location;
if (!location || !geonameId) {
throw new Error(`CheckIn must include a valid location`);
}
return context.prisma.createCheckIn({
title,
location: {
upsert: {
where: {
geonameId
},
update: { ...rest },
create: { ...location }
}
},
public: true,
user: { connect: { id: userId } }
});
}
But I'm getting an error that says "Field 'upsert' is not defined in the input type". Does anyone see what I'm doing wrong here?CCBCodeMonkey
03/04/2019, 2:52 AMCCBCodeMonkey
03/04/2019, 2:52 AMCCBCodeMonkey
03/04/2019, 2:53 AMJo Sprague
03/04/2019, 3:01 AMtype Mutation {
createCheckIn(title: String, location: LocationInput!): CheckIn!
}
type CheckIn {
id: ID!
public: Boolean
title: String
location: Location!
user: User!
createdAt: String!
}
type Location {
id: ID!
geonameId: String
city: String
regionName: String
countryName: String
latitude: String
longitude: String
checkIns: [CheckIn!]
}
input LocationInput {
geonameId: String
city: String
regionName: String
countryName: String
latitude: String
longitude: String
}
CCBCodeMonkey
03/04/2019, 3:01 AMJo Sprague
03/04/2019, 3:02 AMtype CheckIn {
id: ID! @unique
createdAt: DateTime!
updatedAt: DateTime!
public: Boolean @default(value: "true")
title: String
location: Location! @relation(name: "CheckInToLocation")
user: User! @relation(name: "UserCheckIn")
}
type User {
id: ID! @unique
email: String! @unique
password: String!
name: String!
checkIns: [CheckIn!] @relation(name: "UserCheckIn")
following: [User!] @relation(name: "Follow")
followers: [User!] @relation(name: "Follow")
}
type Location {
id: ID! @unique
geonameId: String! @unique
city: String
regionName: String
countryName: String
latitude: String
longitude: String
checkIns: [CheckIn!] @relation(name: "CheckInToLocation")
}
CCBCodeMonkey
03/04/2019, 3:02 AMCCBCodeMonkey
03/04/2019, 3:02 AMJo Sprague
03/04/2019, 3:02 AMCCBCodeMonkey
03/04/2019, 3:02 AMCCBCodeMonkey
03/04/2019, 3:03 AMCCBCodeMonkey
03/04/2019, 3:03 AMJo Sprague
03/04/2019, 3:03 AMCCBCodeMonkey
03/04/2019, 3:03 AMJo Sprague
03/04/2019, 3:04 AMCCBCodeMonkey
03/04/2019, 3:04 AMJo Sprague
03/04/2019, 3:04 AMCCBCodeMonkey
03/04/2019, 3:04 AMCCBCodeMonkey
03/04/2019, 3:04 AMCCBCodeMonkey
03/04/2019, 3:04 AMCCBCodeMonkey
03/04/2019, 3:05 AMCCBCodeMonkey
03/04/2019, 3:05 AMJo Sprague
03/04/2019, 3:05 AMJo Sprague
03/04/2019, 3:05 AMCCBCodeMonkey
03/04/2019, 3:05 AMCCBCodeMonkey
03/04/2019, 3:05 AMJo Sprague
03/04/2019, 3:06 AMCCBCodeMonkey
03/04/2019, 3:06 AMCCBCodeMonkey
03/04/2019, 3:06 AMJo Sprague
03/04/2019, 3:07 AMCCBCodeMonkey
03/04/2019, 3:07 AMCCBCodeMonkey
03/04/2019, 3:07 AMJo Sprague
03/04/2019, 3:07 AMJo Sprague
03/04/2019, 3:07 AMCCBCodeMonkey
03/04/2019, 3:07 AMJo Sprague
03/04/2019, 3:07 AMCCBCodeMonkey
03/04/2019, 3:07 AMCCBCodeMonkey
03/04/2019, 3:07 AMCCBCodeMonkey
03/04/2019, 3:08 AMJo Sprague
03/04/2019, 3:08 AMCCBCodeMonkey
03/04/2019, 3:08 AMJo Sprague
03/04/2019, 3:09 AMJo Sprague
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMJo Sprague
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:09 AMJo Sprague
03/04/2019, 3:09 AMCCBCodeMonkey
03/04/2019, 3:10 AMJo Sprague
03/04/2019, 3:10 AMJo Sprague
03/04/2019, 3:10 AMCCBCodeMonkey
03/04/2019, 3:10 AMCCBCodeMonkey
03/04/2019, 3:10 AMCCBCodeMonkey
03/04/2019, 3:10 AMJo Sprague
03/04/2019, 3:13 AMinput LocationUpsertWithoutCheckInsInput {
update: LocationUpdateWithoutCheckInsDataInput!
create: LocationCreateWithoutCheckInsInput!
}
CCBCodeMonkey
03/04/2019, 3:13 AMCCBCodeMonkey
03/04/2019, 3:13 AMCCBCodeMonkey
03/04/2019, 3:14 AMCCBCodeMonkey
03/04/2019, 3:14 AMCCBCodeMonkey
03/04/2019, 3:14 AMCCBCodeMonkey
03/04/2019, 3:15 AMJo Sprague
03/04/2019, 3:15 AMCCBCodeMonkey
03/04/2019, 3:15 AMCCBCodeMonkey
03/04/2019, 3:15 AMCCBCodeMonkey
03/04/2019, 3:15 AMCCBCodeMonkey
03/04/2019, 3:16 AMJo Sprague
03/04/2019, 3:16 AMCCBCodeMonkey
03/04/2019, 3:16 AMCCBCodeMonkey
03/04/2019, 3:16 AMCCBCodeMonkey
03/04/2019, 3:16 AMCCBCodeMonkey
03/04/2019, 3:17 AMCCBCodeMonkey
03/04/2019, 3:17 AMJo Sprague
03/04/2019, 3:17 AMcontext.prisma.createLocation()
and then context.prisma.createCheckIn()
? In the same function?CCBCodeMonkey
03/04/2019, 3:18 AMCCBCodeMonkey
03/04/2019, 3:18 AMawait
the first oneCCBCodeMonkey
03/04/2019, 3:18 AMCCBCodeMonkey
03/04/2019, 3:18 AMCCBCodeMonkey
03/04/2019, 3:18 AMconnect
on the createCheckin
CCBCodeMonkey
03/04/2019, 3:19 AMCCBCodeMonkey
03/04/2019, 3:19 AMCCBCodeMonkey
03/04/2019, 3:19 AMCCBCodeMonkey
03/04/2019, 3:19 AMCCBCodeMonkey
03/04/2019, 3:20 AMCCBCodeMonkey
03/04/2019, 3:20 AM@nolandg : Ah i misunderstood this issue then. Thanks for bringing this to our attention pray . That original feature request does not make sense though with our semantics. An upsert in our API either update the connected node or create a new node and connect it.
So i guess what we really want is an connectOrCreate.
CCBCodeMonkey
03/04/2019, 3:20 AMJo Sprague
03/04/2019, 3:21 AMJo Sprague
03/04/2019, 3:21 AMcontext.prisma.upsertLocation({})
return something? An object?CCBCodeMonkey
03/04/2019, 3:24 AMCCBCodeMonkey
03/04/2019, 3:24 AMCCBCodeMonkey
03/04/2019, 3:24 AMCCBCodeMonkey
03/04/2019, 3:25 AMconst { id } = await context.prisma.upsertLocation({...blah})
CCBCodeMonkey
03/04/2019, 3:25 AMCCBCodeMonkey
03/04/2019, 3:26 AM{
...
location: {
connect: {
id
}
}
CCBCodeMonkey
03/04/2019, 3:26 AMCCBCodeMonkey
03/04/2019, 3:27 AMJo Sprague
03/04/2019, 3:29 AMJo Sprague
03/04/2019, 3:30 AMCCBCodeMonkey
03/04/2019, 3:30 AMJo Sprague
03/04/2019, 3:34 AMCCBCodeMonkey
03/04/2019, 3:34 AMCCBCodeMonkey
03/04/2019, 3:34 AMCCBCodeMonkey
03/04/2019, 3:34 AMCCBCodeMonkey
03/04/2019, 3:35 AMCCBCodeMonkey
03/04/2019, 3:35 AMCCBCodeMonkey
03/04/2019, 3:35 AM