| name | hive-schema |
| description | How to create database schemas in Hive framework |
| globs | ["src/resources/**/*.schema.js"] |
| alwaysApply | false |
Creating Database Schemas
Location: /src/resources/{name}/{name}.schema.js
Template
import { z } from 'zod';
import dbSchema from 'helpers/schema/db.schema.js';
const schema = dbSchema.extend({
});
export default schema;
export const secureFields = [];
Field Patterns
Simple fields:
title: z.coerce.string().nullable().optional(),
count: z.coerce.number().nullable().optional(),
isActive: z.coerce.boolean().nullable().optional(),
dueOn: z.coerce.date().nullable().optional(),
Reference to another document:
user: z
.object({
_id: z.string(),
fullName: z.coerce.string().nullable().optional(),
avatarUrl: z.coerce.string().nullable().optional(),
})
.nullable()
.optional(),
Array of references:
managers: z
.array(
z.object({
_id: z.string(),
fullName: z.coerce.string().nullable().optional(),
}).nullable().optional(),
)
.nullable()
.optional(),
Flexible object:
data: z.object({}).passthrough().nullable().optional(),
Rules
- Always use
z.coerce for type safety
- Always add
.nullable().optional() unless required
- Include fields you need in references (for auto-sync)
- Add sensitive fields to
secureFields array