# Validations ### Hotel ``` { $jsonSchema: { required: [ 'name', 'address' ], properties: { name: { bsonType: 'string' }, address: { bsonType: 'object', required: [ 'country', 'state', 'city', 'street', 'number', 'cep' ], properties: { country: { bsonType: 'string' }, state: { bsonType: 'string' }, city: { bsonType: 'string' }, street: { bsonType: 'string' }, number: { bsonType: 'string' }, cep: { bsonType: 'string', maxLength: 8 } } } } } } ``` ### Room ``` { $jsonSchema: { required: [ 'number', 'hotel_id', 'type', 'accessible', 'daily_price' ], properties: { number: { bsonType: 'string' }, hotel_id: { bsonType: 'objectId' }, type: { 'enum': [ 'Single', 'Double', 'Family', 'Presidential' ] }, accessible: { bsonType: 'bool' }, daily_price: { bsonType: [ 'double' ] } } } } ``` ### Customer ``` { $jsonSchema: { required: [ 'cpf', 'name', 'address', 'nationality', 'email', 'phone' ], properties: { cpf: { bsonType: 'string', maxLength: 11 }, name: { bsonType: 'string' }, address: { bsonType: 'object', required: [ 'country', 'state', 'city', 'street', 'number', 'cep' ], properties: { country: { bsonType: 'string' }, state: { bsonType: 'string' }, city: { bsonType: 'string' }, street: { bsonType: 'string' }, number: { bsonType: 'string' }, cep: { bsonType: 'string', maxLength: 8 } } }, nationality: { bsonType: 'string' }, email: { bsonType: 'string' }, phone: { bsonType: 'string', maxLength: 9 } } } } ``` ### ### Reservation ``` { $jsonSchema: { required: [ 'employee', 'room_id', 'customer_id', 'canceled', 'total_value', 'payment_method', 'start_date', 'end_date' ], properties: { employee: { bsonType: 'string' }, room_id: { bsonType: 'objectId' }, customer_id: { bsonType: 'objectId' }, canceled: { bsonType: 'bool' }, total_value: { bsonType: 'double' }, payment_method: { 'enum': [ 'money', 'pix', 'debit card', 'credit card' ] }, start_date: { bsonType: 'date' }, end_date: { bsonType: 'date' } } } } ``` ### Employee ``` { $jsonSchema: { required: [ 'cpf', 'name', 'position' ], properties: { cpf: { bsonType: 'string', maxLength: 11 }, name: { bsonType: 'string' }, position: { 'enum': [ 'attendant', 'manager', 'janitor', 'laundry', 'cook' ] } } } } ```