# Adapters

Adapters are what interpret how the final queries for CRUD operations create, createMany, upsert, etc., are built for execution. The default adapter is build for Prisma and OpenCRUD (opens new window) convention.

# Default Adapter Interpretations

class User extends Model {
  static entity = "User";

  static fields(f) {
    f.id();
    f.string("name");
    f.string("email");
  }
}

# Create

const user = await User.create(data);
mutation ($data: UserCreateInput!) {
  createOneUser(data: $data) {
    id
    name
    email
  }
}

# Create Many

const users = await User.createMany([user1Data, user2Data]);
mutation ($data: [UserCreateInput!]!) {
  createManyUsers(data: $data) {
    id
    name
    email
  }
}

# Upsert

const user = await User.upsert(where, data);
mutation ($where: UserWhereInput!, $data: UserUpdateInput!) {
  upsertOneUser(where: $where, data: $data) {
    id
    name
    email
  }
}

# Update

const user = await User.update(where, data);
mutation ($where: UserWhereUniqueInput!, $data: UserUpdateInput!) {
  updateOneUser(where: $where, data: $data) {
    id
    name
    email
  }
}

# Find Many

const users = await User.findMany();
query {
  users {
    id
    name
    email
  }
}

# Find Unique

const user = await User.findUnique();
query ($where: UserWhereUniqueInput!) {
  user(where: $where) {
    id
    name
    email
  }
}

# Delete

const user = await User.delete(where);
mutation ($where: UserWhereUniqueInput!) {
  deleteOneUser(where: $where) {
    id
    name
    email
  }
}

# Update an existing model

const user = await User.findUnique(where);
user.$fill(data);
user.$update();
mutation ($where: UserWhereUniqueInput!, $data: UserUpdateInput!) {
  updateOneUser(where: $where, data: $data) {
    id
    name
    email
  }
}

# Delete an existing model

const user = await User.findUnique(where);
user.$delete();
mutation ($where: UserWhereUniqueInput!) {
  deleteOneUser(where: $where) {
    id
    name
    email
  }
}