© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
Drizzle TeamDT
Drizzle Team•2y ago
joostschuur

Defining types for default values in createSelectSchema

In my users table schema for a Turso DB, I've got a field of
settings: text('settings', { mode: 'json' })
settings: text('settings', { mode: 'json' })
. I'd like to define the defaults outside of the schema definition, so this doesn't potentially change the database and require a migration when I need new setting values, but I also want to type this field in my app.

So I have a userSettingsSchema and want to set the default via createSelectSchema's options:

export const userSettingsSchema = z.object({
  maxOpenTodoItems: z.number().int().min(1).max(24),
});
export type UserSettings = z.infer<typeof userSettingsSchema>;

const userDataSchemaOptions = {
  settings: userSettingsSchema.default(defaultUserSettings),
};

export const userDataSchema = createSelectSchema(userData, userDataSchemaOptions);
export type UserData = z.infer<typeof userDataSchema>;
export const userSettingsSchema = z.object({
  maxOpenTodoItems: z.number().int().min(1).max(24),
});
export type UserSettings = z.infer<typeof userSettingsSchema>;

const userDataSchemaOptions = {
  settings: userSettingsSchema.default(defaultUserSettings),
};

export const userDataSchema = createSelectSchema(userData, userDataSchemaOptions);
export type UserData = z.infer<typeof userDataSchema>;


However, under UserData, settings is still null or my UserSettings type. Wouldn't my
userDataSchemaOptions
userDataSchemaOptions
have narrowed that down?

It looks like I can force it more explicitly like this:

export type UserData = z.infer<typeof userDataSchema> & { settings: UserSettings };
export type UserData = z.infer<typeof userDataSchema> & { settings: UserSettings };
Drizzle TeamJoin
The official Discord for all Drizzle related projects, such as Drizzle ORM, Drizzle Kit, Drizzle Studio and more!
11,879Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

Default values not working for insert
Drizzle TeamDTDrizzle Team / help
3y ago
Question about default values for timestamp
Drizzle TeamDTDrizzle Team / help
7mo ago
createInsertSchema & createSelectSchema difference
Drizzle TeamDTDrizzle Team / help
3y ago
Using default values removes columns from insert and update types
Drizzle TeamDTDrizzle Team / help
2y ago