Documentation
Walkthrough
Upsert

Upsert records

Use upsert to update or create records depending on whether it already exists or not.

The examples use the following prisma schema:

model Post {
    id        String   @id @default(cuid())
    createdAt DateTime @default(now())
    updatedAt DateTime @updatedAt
    published Boolean
    title     String
    content   String?
    views     Int      @default(0)
}

Upsert a record

Use UpsertOne to query for a document, define what to write when creating the document, and what to update if the document already exists.

post, err := client.Post.UpsertOne(
    // query
    db.Post.ID.Equals("upsert"),
).Create(
    // set these fields if document doesn't exist already
    db.Post.Published.Set(true),
    db.Post.Title.Set("title"),
    db.Post.ID.Set("upsert"),
).Update(
    // update these fields if document already exists
    db.Post.Title.Set("new-title"),
    db.Post.Views.Increment(1),
).Exec(ctx)