VibORM
Filtering

Boolean Filters

Filter operators for boolean fields

Boolean Filters

Filter operators available for boolean fields.

Operators

OperatorDescription
equalsExact match
notNegation

equals

// Direct value
where: { active: true }
where: { published: false }

// Explicit equals
where: { active: { equals: true } }

not

// Negation
where: { active: { not: true } }   // Same as active: false
where: { deleted: { not: false } }  // Same as deleted: true

Nullable Booleans

For nullable boolean fields:

// Only true
where: { verified: true }

// Only false (not null)
where: { verified: false }

// Only null
where: { verified: null }

// Not null (true or false)
where: { verified: { not: null } }

Combined Conditions

// Active and not deleted
where: {
  active: true,
  deleted: false,
}

// Published or featured
where: {
  OR: [
    { published: true },
    { featured: true },
  ],
}

Examples

Active Users

async function getActiveUsers() {
  return client.user.findMany({
    where: { active: true },
  });
}

Published Posts

async function getPublishedPosts() {
  return client.post.findMany({
    where: {
      published: true,
      deleted: false,
    },
    orderBy: { publishedAt: "desc" },
  });
}

Unverified Emails

async function getUnverifiedUsers() {
  return client.user.findMany({
    where: { emailVerified: false },
  });
}

Feature Flags

async function getUsersWithBeta() {
  return client.user.findMany({
    where: {
      settings: {
        path: ["betaFeatures"],
        equals: true,
      },
    },
  });
}

Soft Delete Filter

// Get only non-deleted
async function getActiveItems() {
  return client.item.findMany({
    where: { deleted: false },
  });
}

// Get only deleted
async function getDeletedItems() {
  return client.item.findMany({
    where: { deleted: true },
  });
}

// Get all (including deleted)
async function getAllItems() {
  return client.item.findMany();
}

Status Combination

async function getReviewablePosts() {
  return client.post.findMany({
    where: {
      published: false,
      submitted: true,
      rejected: false,
    },
  });
}

On this page