706 lines
26 KiB
JavaScript
706 lines
26 KiB
JavaScript
/**
|
||
* 动物管理模块 Swagger 文档
|
||
* @file swagger-animals.js
|
||
*/
|
||
|
||
const animalsPaths = {
|
||
// 获取所有动物列表
|
||
'/animals': {
|
||
get: {
|
||
tags: ['动物管理'],
|
||
summary: '获取动物列表',
|
||
description: '分页获取系统中的所有动物信息',
|
||
parameters: [
|
||
{
|
||
name: 'page',
|
||
in: 'query',
|
||
schema: { type: 'integer', default: 1 },
|
||
description: '页码'
|
||
},
|
||
{
|
||
name: 'limit',
|
||
in: 'query',
|
||
schema: { type: 'integer', default: 10 },
|
||
description: '每页数量'
|
||
},
|
||
{
|
||
name: 'search',
|
||
in: 'query',
|
||
schema: { type: 'string' },
|
||
description: '搜索关键词(项圈编号、耳标号)'
|
||
},
|
||
{
|
||
name: 'farmId',
|
||
in: 'query',
|
||
schema: { type: 'integer' },
|
||
description: '养殖场ID筛选'
|
||
},
|
||
{
|
||
name: 'status',
|
||
in: 'query',
|
||
schema: { type: 'string', enum: ['healthy', 'sick', 'quarantine', 'sold'] },
|
||
description: '动物状态筛选'
|
||
},
|
||
{
|
||
name: 'category',
|
||
in: 'query',
|
||
schema: { type: 'integer', enum: [1, 2, 3, 4, 5, 6] },
|
||
description: '动物类别筛选:1-犊牛,2-育成母牛,3-架子牛,4-青年牛,5-基础母牛,6-育肥牛'
|
||
},
|
||
{
|
||
name: 'sex',
|
||
in: 'query',
|
||
schema: { type: 'integer', enum: [1, 2] },
|
||
description: '性别筛选:1-公牛,2-母牛'
|
||
}
|
||
],
|
||
responses: {
|
||
'200': {
|
||
description: '获取成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
data: {
|
||
type: 'array',
|
||
items: { $ref: '#/components/schemas/Animal' }
|
||
},
|
||
pagination: {
|
||
type: 'object',
|
||
properties: {
|
||
page: { type: 'integer' },
|
||
limit: { type: 'integer' },
|
||
total: { type: 'integer' },
|
||
totalPages: { type: 'integer' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
post: {
|
||
tags: ['动物管理'],
|
||
summary: '创建新动物档案',
|
||
description: '创建新的动物档案记录',
|
||
requestBody: {
|
||
required: true,
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
required: ['earNumber', 'sex', 'varieties', 'cate', 'farmId'],
|
||
properties: {
|
||
earNumber: { type: 'string', description: '耳标号' },
|
||
sex: { type: 'integer', enum: [1, 2], description: '性别:1-公牛,2-母牛' },
|
||
strain: { type: 'string', description: '品系' },
|
||
varieties: { type: 'integer', description: '品种ID' },
|
||
cate: {
|
||
type: 'integer',
|
||
enum: [1, 2, 3, 4, 5, 6],
|
||
description: '类别:1-犊牛,2-育成母牛,3-架子牛,4-青年牛,5-基础母牛,6-育肥牛'
|
||
},
|
||
birthWeight: { type: 'number', description: '出生重量(kg)' },
|
||
birthday: { type: 'integer', description: '出生日期(时间戳)' },
|
||
farmId: { type: 'integer', description: '养殖场ID' },
|
||
penId: { type: 'integer', description: '栏舍ID' },
|
||
batchId: { type: 'integer', description: '批次ID' },
|
||
intoTime: { type: 'integer', description: '入场时间(时间戳)' },
|
||
parity: { type: 'integer', description: '胎次' },
|
||
source: {
|
||
type: 'integer',
|
||
enum: [1, 2, 3, 4, 5],
|
||
description: '来源:1-合作社,2-农户,3-养殖场,4-进口,5-自繁'
|
||
},
|
||
sourceDay: { type: 'integer', description: '来源日龄' },
|
||
sourceWeight: { type: 'number', description: '来源重量(kg)' },
|
||
weight: { type: 'number', description: '当前重量(kg)' },
|
||
algebra: { type: 'string', description: '代数' },
|
||
colour: { type: 'string', description: '毛色' },
|
||
descent: { type: 'string', description: '血统' },
|
||
imgs: { type: 'string', description: '图片URL(多个用逗号分隔)' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
responses: {
|
||
'201': {
|
||
description: '创建成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
message: { type: 'string', example: '动物档案创建成功' },
|
||
data: { $ref: '#/components/schemas/Animal' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
'400': {
|
||
description: '请求参数错误',
|
||
content: {
|
||
'application/json': {
|
||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
// 公共动物数据
|
||
'/animals/public': {
|
||
get: {
|
||
tags: ['动物管理'],
|
||
summary: '获取公共动物数据',
|
||
description: '获取可公开访问的动物基本信息',
|
||
security: [], // 公共接口不需要认证
|
||
responses: {
|
||
'200': {
|
||
description: '获取成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
data: {
|
||
type: 'array',
|
||
items: {
|
||
type: 'object',
|
||
properties: {
|
||
id: { type: 'integer' },
|
||
earNumber: { type: 'string' },
|
||
sex: { type: 'integer' },
|
||
varieties: { type: 'integer' },
|
||
cate: { type: 'integer' },
|
||
weight: { type: 'number' },
|
||
isOut: { type: 'integer' }
|
||
}
|
||
}
|
||
},
|
||
message: { type: 'string' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
// 获取动物绑定信息
|
||
'/animals/binding-info/{collarNumber}': {
|
||
get: {
|
||
tags: ['动物管理'],
|
||
summary: '获取动物绑定信息',
|
||
description: '根据项圈编号获取动物的详细绑定信息',
|
||
parameters: [
|
||
{
|
||
name: 'collarNumber',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'string' },
|
||
description: '项圈编号'
|
||
}
|
||
],
|
||
responses: {
|
||
'200': {
|
||
description: '获取成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
message: { type: 'string' },
|
||
data: {
|
||
type: 'object',
|
||
properties: {
|
||
basicInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
collarNumber: { type: 'string', description: '项圈编号' },
|
||
category: { type: 'string', description: '动物类别' },
|
||
calvingCount: { type: 'integer', description: '产犊次数' },
|
||
earTag: { type: 'string', description: '耳标号' },
|
||
animalType: { type: 'string', description: '动物类型' },
|
||
breed: { type: 'string', description: '品种' },
|
||
sourceType: { type: 'string', description: '来源类型' }
|
||
}
|
||
},
|
||
birthInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
birthDate: { type: 'string', description: '出生日期' },
|
||
birthWeight: { type: 'string', description: '出生重量' },
|
||
weaningWeight: { type: 'string', description: '断奶重量' },
|
||
entryDate: { type: 'string', description: '入场日期' },
|
||
weaningAge: { type: 'integer', description: '断奶日龄' }
|
||
}
|
||
},
|
||
pedigreeInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
fatherId: { type: 'string', description: '父亲ID' },
|
||
motherId: { type: 'string', description: '母亲ID' },
|
||
grandfatherId: { type: 'string', description: '祖父ID' },
|
||
grandmotherId: { type: 'string', description: '祖母ID' },
|
||
bloodline: { type: 'string', description: '血统' },
|
||
generation: { type: 'string', description: '世代' }
|
||
}
|
||
},
|
||
insuranceInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
policyNumber: { type: 'string', description: '保单号' },
|
||
insuranceCompany: { type: 'string', description: '保险公司' },
|
||
coverageAmount: { type: 'string', description: '保额' },
|
||
premium: { type: 'string', description: '保费' },
|
||
startDate: { type: 'string', description: '开始日期' },
|
||
endDate: { type: 'string', description: '结束日期' },
|
||
status: { type: 'string', description: '保险状态' }
|
||
}
|
||
},
|
||
loanInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
loanNumber: { type: 'string', description: '贷款编号' },
|
||
bankName: { type: 'string', description: '银行名称' },
|
||
loanAmount: { type: 'string', description: '贷款金额' },
|
||
interestRate: { type: 'string', description: '利率' },
|
||
loanDate: { type: 'string', description: '放款日期' },
|
||
maturityDate: { type: 'string', description: '到期日期' },
|
||
status: { type: 'string', description: '贷款状态' }
|
||
}
|
||
},
|
||
deviceInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
deviceId: { type: 'integer', description: '设备ID' },
|
||
batteryLevel: { type: 'number', description: '电池电量' },
|
||
temperature: { type: 'number', description: '温度' },
|
||
status: { type: 'string', description: '设备状态' },
|
||
lastUpdate: { type: 'string', description: '最后更新时间' },
|
||
location: { type: 'string', description: '位置信息' }
|
||
}
|
||
},
|
||
farmInfo: {
|
||
type: 'object',
|
||
properties: {
|
||
farmName: { type: 'string', description: '农场名称' },
|
||
farmAddress: { type: 'string', description: '农场地址' },
|
||
penName: { type: 'string', description: '栏舍名称' },
|
||
batchName: { type: 'string', description: '批次名称' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
'404': {
|
||
description: '未找到指定的动物或设备',
|
||
content: {
|
||
'application/json': {
|
||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
// 获取指定动物详情
|
||
'/animals/{id}': {
|
||
get: {
|
||
tags: ['动物管理'],
|
||
summary: '获取动物详情',
|
||
description: '根据动物ID获取详细信息',
|
||
parameters: [
|
||
{
|
||
name: 'id',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'integer' },
|
||
description: '动物ID'
|
||
}
|
||
],
|
||
responses: {
|
||
'200': {
|
||
description: '获取成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
data: { $ref: '#/components/schemas/Animal' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
'404': {
|
||
description: '动物不存在',
|
||
content: {
|
||
'application/json': {
|
||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
put: {
|
||
tags: ['动物管理'],
|
||
summary: '更新动物信息',
|
||
description: '更新指定动物的档案信息',
|
||
parameters: [
|
||
{
|
||
name: 'id',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'integer' },
|
||
description: '动物ID'
|
||
}
|
||
],
|
||
requestBody: {
|
||
required: true,
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
earNumber: { type: 'string', description: '耳标号' },
|
||
sex: { type: 'integer', enum: [1, 2], description: '性别' },
|
||
strain: { type: 'string', description: '品系' },
|
||
varieties: { type: 'integer', description: '品种ID' },
|
||
cate: { type: 'integer', enum: [1, 2, 3, 4, 5, 6], description: '类别' },
|
||
weight: { type: 'number', description: '当前重量(kg)' },
|
||
penId: { type: 'integer', description: '栏舍ID' },
|
||
batchId: { type: 'integer', description: '批次ID' },
|
||
event: { type: 'string', description: '事件记录' },
|
||
eventTime: { type: 'integer', description: '事件时间(时间戳)' },
|
||
isVaccin: { type: 'integer', enum: [0, 1], description: '是否疫苗' },
|
||
isInsemination: { type: 'integer', enum: [0, 1], description: '是否配种' },
|
||
isInsure: { type: 'integer', enum: [0, 1], description: '是否保险' },
|
||
isMortgage: { type: 'integer', enum: [0, 1], description: '是否抵押' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
responses: {
|
||
'200': {
|
||
description: '更新成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
message: { type: 'string', example: '动物信息更新成功' },
|
||
data: { $ref: '#/components/schemas/Animal' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
'400': {
|
||
description: '请求参数错误',
|
||
content: {
|
||
'application/json': {
|
||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||
}
|
||
}
|
||
},
|
||
'404': {
|
||
description: '动物不存在',
|
||
content: {
|
||
'application/json': {
|
||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
delete: {
|
||
tags: ['动物管理'],
|
||
summary: '删除动物档案',
|
||
description: '删除指定动物档案(软删除)',
|
||
parameters: [
|
||
{
|
||
name: 'id',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'integer' },
|
||
description: '动物ID'
|
||
}
|
||
],
|
||
responses: {
|
||
'200': {
|
||
description: '删除成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
message: { type: 'string', example: '动物档案删除成功' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
'404': {
|
||
description: '动物不存在',
|
||
content: {
|
||
'application/json': {
|
||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
// 动物健康记录
|
||
'/animals/{id}/health': {
|
||
get: {
|
||
tags: ['动物管理'],
|
||
summary: '获取动物健康记录',
|
||
description: '获取指定动物的健康记录',
|
||
parameters: [
|
||
{
|
||
name: 'id',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'integer' },
|
||
description: '动物ID'
|
||
}
|
||
],
|
||
responses: {
|
||
'200': {
|
||
description: '获取成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
data: {
|
||
type: 'array',
|
||
items: {
|
||
type: 'object',
|
||
properties: {
|
||
id: { type: 'integer' },
|
||
animalId: { type: 'integer' },
|
||
checkDate: { type: 'string', format: 'date' },
|
||
temperature: { type: 'number' },
|
||
weight: { type: 'number' },
|
||
healthStatus: { type: 'string' },
|
||
symptoms: { type: 'string' },
|
||
treatment: { type: 'string' },
|
||
veterinarian: { type: 'string' },
|
||
notes: { type: 'string' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
post: {
|
||
tags: ['动物管理'],
|
||
summary: '添加动物健康记录',
|
||
description: '为指定动物添加健康检查记录',
|
||
parameters: [
|
||
{
|
||
name: 'id',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'integer' },
|
||
description: '动物ID'
|
||
}
|
||
],
|
||
requestBody: {
|
||
required: true,
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
required: ['checkDate', 'healthStatus'],
|
||
properties: {
|
||
checkDate: { type: 'string', format: 'date', description: '检查日期' },
|
||
temperature: { type: 'number', description: '体温' },
|
||
weight: { type: 'number', description: '体重' },
|
||
healthStatus: {
|
||
type: 'string',
|
||
enum: ['healthy', 'sick', 'recovering', 'quarantine'],
|
||
description: '健康状态'
|
||
},
|
||
symptoms: { type: 'string', description: '症状描述' },
|
||
treatment: { type: 'string', description: '治疗方案' },
|
||
veterinarian: { type: 'string', description: '兽医姓名' },
|
||
notes: { type: 'string', description: '备注' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
responses: {
|
||
'201': {
|
||
description: '添加成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
message: { type: 'string', example: '健康记录添加成功' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
// 动物繁殖记录
|
||
'/animals/{id}/breeding': {
|
||
get: {
|
||
tags: ['动物管理'],
|
||
summary: '获取动物繁殖记录',
|
||
description: '获取指定动物的繁殖记录',
|
||
parameters: [
|
||
{
|
||
name: 'id',
|
||
in: 'path',
|
||
required: true,
|
||
schema: { type: 'integer' },
|
||
description: '动物ID'
|
||
}
|
||
],
|
||
responses: {
|
||
'200': {
|
||
description: '获取成功',
|
||
content: {
|
||
'application/json': {
|
||
schema: {
|
||
type: 'object',
|
||
properties: {
|
||
success: { type: 'boolean', example: true },
|
||
data: {
|
||
type: 'array',
|
||
items: {
|
||
type: 'object',
|
||
properties: {
|
||
id: { type: 'integer' },
|
||
animalId: { type: 'integer' },
|
||
breedingDate: { type: 'string', format: 'date' },
|
||
matingType: { type: 'string', enum: ['natural', 'artificial'] },
|
||
sireId: { type: 'integer' },
|
||
expectedCalvingDate: { type: 'string', format: 'date' },
|
||
actualCalvingDate: { type: 'string', format: 'date' },
|
||
calvingResult: { type: 'string' },
|
||
offspringCount: { type: 'integer' },
|
||
notes: { type: 'string' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
// 动物数据模型
|
||
const animalSchemas = {
|
||
Animal: {
|
||
type: 'object',
|
||
properties: {
|
||
id: { type: 'integer', description: '动物ID' },
|
||
orgId: { type: 'integer', description: '组织ID' },
|
||
earNumber: { type: 'string', description: '耳标号' },
|
||
sex: {
|
||
type: 'integer',
|
||
enum: [1, 2],
|
||
description: '性别:1-公牛,2-母牛'
|
||
},
|
||
strain: { type: 'string', description: '品系' },
|
||
varieties: { type: 'integer', description: '品种ID' },
|
||
cate: {
|
||
type: 'integer',
|
||
enum: [1, 2, 3, 4, 5, 6],
|
||
description: '类别:1-犊牛,2-育成母牛,3-架子牛,4-青年牛,5-基础母牛,6-育肥牛'
|
||
},
|
||
birthWeight: { type: 'number', description: '出生重量(kg)' },
|
||
birthday: { type: 'integer', description: '出生日期(时间戳)' },
|
||
penId: { type: 'integer', description: '栏舍ID' },
|
||
intoTime: { type: 'integer', description: '入场时间(时间戳)' },
|
||
parity: { type: 'integer', description: '胎次' },
|
||
source: {
|
||
type: 'integer',
|
||
enum: [1, 2, 3, 4, 5],
|
||
description: '来源:1-合作社,2-农户,3-养殖场,4-进口,5-自繁'
|
||
},
|
||
sourceDay: { type: 'integer', description: '来源日龄' },
|
||
sourceWeight: { type: 'number', description: '来源重量(kg)' },
|
||
weight: { type: 'number', description: '当前重量(kg)' },
|
||
event: { type: 'string', description: '事件记录' },
|
||
eventTime: { type: 'integer', description: '事件时间(时间戳)' },
|
||
lactationDay: { type: 'integer', description: '泌乳天数' },
|
||
semenNum: { type: 'string', description: '精液编号' },
|
||
isWear: { type: 'integer', enum: [0, 1], description: '是否佩戴设备' },
|
||
batchId: { type: 'integer', description: '批次ID' },
|
||
imgs: { type: 'string', description: '图片URL(多个用逗号分隔)' },
|
||
isEleAuth: { type: 'integer', enum: [0, 1], description: '是否电子认证' },
|
||
isQuaAuth: { type: 'integer', enum: [0, 1], description: '是否质量认证' },
|
||
isDelete: { type: 'integer', enum: [0, 1], description: '是否删除' },
|
||
isOut: { type: 'integer', enum: [0, 1], description: '是否出栏' },
|
||
createUid: { type: 'integer', description: '创建用户ID' },
|
||
createTime: { type: 'integer', description: '创建时间(时间戳)' },
|
||
algebra: { type: 'string', description: '代数' },
|
||
colour: { type: 'string', description: '毛色' },
|
||
infoWeight: { type: 'number', description: '信息重量' },
|
||
descent: { type: 'string', description: '血统' },
|
||
isVaccin: { type: 'integer', enum: [0, 1], description: '是否疫苗' },
|
||
isInsemination: { type: 'integer', enum: [0, 1], description: '是否配种' },
|
||
isInsure: { type: 'integer', enum: [0, 1], description: '是否保险' },
|
||
isMortgage: { type: 'integer', enum: [0, 1], description: '是否抵押' },
|
||
updateTime: { type: 'integer', description: '更新时间(时间戳)' },
|
||
breedBullTime: { type: 'integer', description: '配种时间(时间戳)' },
|
||
level: { type: 'string', description: '等级' },
|
||
sixWeight: { type: 'number', description: '6月龄重量' },
|
||
eighteenWeight: { type: 'number', description: '18月龄重量' },
|
||
twelveDayWeight: { type: 'number', description: '12日龄重量' },
|
||
eighteenDayWeight: { type: 'number', description: '18日龄重量' },
|
||
xxivDayWeight: { type: 'number', description: '24日龄重量' },
|
||
semenBreedImgs: { type: 'string', description: '配种图片' },
|
||
sellStatus: { type: 'integer', description: '销售状态' },
|
||
weightCalculateTime: { type: 'integer', description: '重量计算时间' },
|
||
dayOfBirthday: { type: 'integer', description: '出生天数' },
|
||
userId: { type: 'integer', description: '用户ID' }
|
||
}
|
||
}
|
||
};
|
||
|
||
module.exports = { animalsPaths, animalSchemas }; |