Skip to main content

Global omit

By specifying omit in the GassmaClient constructor, default field exclusion is applied to all queries for the specified sheets.

Basic Usage

const gassma = new Gassma.GassmaClient({
omit: {
Users: {
password: true,
secret: true,
},
Posts: {
internalNotes: true,
},
},
});

// When fetching from the Users sheet, password and secret are automatically excluded
const users = gassma.Users.findMany({});
// => [{ id: 1, name: "Alice", email: "alice@example.com" }, ...]
// password and secret fields are not included

Priority

Global omit, query-level omit, and select have the following priority order.

PriorityConditionBehavior
1 (highest)select is specifiedIgnores both global omit and query omit
2Query omit is specifiedMerged with global omit
3Neither is specifiedGlobal omit is applied as-is

Overriding Global omit with select

When select is specified, global omit is not applied.

// Global omit: { password: true }
const result = gassma.Users.findMany({
select: { name: true, password: true },
});
// => [{ name: "Alice", password: "secret123" }]
// select takes highest priority, so password is also retrieved

Overriding Global omit with Query omit

You can disable global omit on a per-field basis by specifying false in the query-level omit.

// Global omit: { password: true, secret: true }
const result = gassma.Users.findMany({
omit: { password: false },
});
// => [{ id: 1, name: "Alice", password: "secret123" }]
// Global omit for password is disabled; only secret is excluded

You can specify additional fields to exclude by setting true in the query omit.

// Global omit: { password: true }
const result = gassma.Users.findMany({
omit: { email: true },
});
// => [{ id: 1, name: "Alice" }]
// Both password (global) and email (query) are excluded

Supported Methods

Global omit is applied to the following methods.

MethodApplied
findMany
findFirst / findFirstOrThrow
create
update
upsert
delete
createManyAndReturn
updateManyAndReturn
note

createMany, updateMany, and deleteMany return { count: number }, so they are not affected by global omit.

Combining with Relations

const gassma = new Gassma.GassmaClient({
omit: {
Users: { password: true },
},
relations: {
Users: {
posts: { type: "oneToMany", to: "Posts", field: "id", reference: "authorId" },
},
},
});

// Can be used together with relations
const result = gassma.Users.findMany({
include: { posts: true },
});
// => [{ id: 1, name: "Alice", posts: [...] }]
// password is excluded while relation data is also retrieved

Validation

ErrorCause
GassmaFindSelectOmitConflictErrorselect and omit are specified simultaneously at the query level