Thin MongoDB ODM built for Standard Schema
mongodb zod deno
1import { z } from "@zod/zod"; 2import { connect, disconnect, type Input, Model } from "../mod.ts"; 3import { MongoMemoryServer } from "mongodb-memory-server-core"; 4 5export const userSchema = z.object({ 6 name: z.string(), 7 email: z.email(), 8 age: z.number().int().positive().optional(), 9 createdAt: z.date().default(() => new Date()), 10}); 11 12export type UserInsert = Input<typeof userSchema>; 13 14let mongoServer: MongoMemoryServer | null = null; 15let isSetup = false; 16 17export async function setupTestDb() { 18 if (!isSetup) { 19 // Start MongoDB Memory Server 20 mongoServer = await MongoMemoryServer.create(); 21 const uri = mongoServer.getUri(); 22 23 // Connect to the in-memory database 24 await connect(uri, "test_db"); 25 isSetup = true; 26 } 27} 28 29export async function teardownTestDb() { 30 if (isSetup) { 31 await disconnect(); 32 if (mongoServer) { 33 await mongoServer.stop(); 34 mongoServer = null; 35 } 36 isSetup = false; 37 } 38} 39 40export function createUserModel(): Model<typeof userSchema> { 41 return new Model("users", userSchema); 42} 43 44export async function cleanupCollection(model: Model<typeof userSchema>) { 45 await model.delete({}); 46} 47