Skip to content

Instantly share code, notes, and snippets.

@sajeetharan
Created April 20, 2017 17:34
Show Gist options
  • Save sajeetharan/af45e339de06653b2ad6058fb244a2b9 to your computer and use it in GitHub Desktop.
Save sajeetharan/af45e339de06653b2ad6058fb244a2b9 to your computer and use it in GitHub Desktop.
schema
module.exports = function (dbService) {
var model = null;
var modelName = '_listing_seller';
try {
model = dbService.getModel(modelName);
} catch (error) {
var attachmentSchema = dbService.createEntityDef({
enabled: {
type: Boolean
},
attachementUrl: {
type: String
}
})
var seatingSchema = dbService.createEntityDef({
category: {
type: String
},
section: {
type: Number,
},
row: {
type: Number
},
seatNo: {
type: Number
},
ticketUrl: {
type: String,
},
attachment: [attachmentSchema]
})
var ticketSchema = dbService.createEntityDef({
amount: {
type: Number
},
type: {
type: String
},
isInPossesion: {
type: Boolean
},
seating: [seatingSchema],
splitType: {
type: Number
},
confirmationUrl: String
});
var deliverySchema = dbService.createEntityDef({
pickupAllowed: {
type: Boolean
},
city: {
type: String
},
zip: {
type: String
},
country: {
type: String
},
timeframe: {
type: Number
},
readytoship: {
type: Boolean
},
unespecifiedshipment: {
type: Boolean
}
})
var privacySchema = dbService.createEntityDef({
type: {
type: String
}
});
var originalSchema = dbService.createEntityDef({
value: {
type: Number
},
currency: {
type: String
}
});
var sellingSchema = dbService.createEntityDef({
value: {
type: Number
},
currency: {
type: String
}
});
var priceSchema = dbService.createEntityDef({
original: originalSchema,
selling: sellingSchema,
allowProposals: {
type: Boolean
}
})
var extrasSchema = dbService.createEntityDef({
restrictedView: {
type: Boolean
},
childConcession: {
type: Boolean
},
wheelchairOnly: {
type: Boolean
},
alcoholFree: {
type: Boolean
},
standingOnly: {
type: Boolean
},
ticketAndHotel: {
type: Boolean
},
aisleSeat: {
type: Boolean
},
studentConcession: {
type: Boolean
},
parkingIncluded: {
type: Boolean
}
})
var concessionSchema = dbService.createEntityDef({
note: {
type: String
},
extras: {
type: extrasSchema
}
})
var listingSchema = dbService.createEntityDef({
startPrice: {
type: Number
},
availableTickets: {
type: Number
}
})
var dateSchema = dbService.createEntityDef({
start: {
type: Date
}
})
var userSchema = dbService.createEntityDef({
userId: {
type: String
},
email: {
type: String
},
firstName: {
type: String
},
lastName: {
type: String
},
urlPicture: {
type: String
}
})
var locationSchema = dbService.createEntityDef({
city: {
type: String
},
country: {
type: String
},
zip: {
type: String
}
})
var eventSchema = dbService.createEntityDef({
eventId: {
type: String
},
name: {
type: String
},
category: {
type: String
},
date: dateSchema,
location: locationSchema
})
var metaSchema = dbService.createEntityDef({
user: userSchema,
event: eventSchema,
venue: []
})
var privacySchema = dbService.createEntityDef({
type: {
type: String
}
})
var ConfirmationSchema = dbService.createEntityDef({
termUserAgreement: {
type: Boolean
},
termTicketValid: {
type: Boolean
},
termTicketApproval: {
type: Boolean
},
termTicketRemoval: {
type: Boolean
}
})
var ProposalSchema = dbService.createEntityDef({
proposalId: {
type: String
},
date: {
type: Date
},
price: sellingSchema,
status: {
type: String
}
})
var listing_sellerSchema = {
_id: {
type: dbService.getPrimaryKeyType(),
index: true
},
description: {
type: String
},
name: {
type: String
},
listingId: {
type: String
},
eventId: {
type: String
},
safeUrl: {
type: String
},
status:{
type: String
},
ticket: ticketSchema,
concession: concessionSchema,
privacy: privacySchema,
price: priceSchema,
metadata: metaSchema,
proposal: [ProposalSchema],
delivery: deliverySchema,
confirmation: ConfirmationSchema
};
model = dbService.createModel(modelName, listing_sellerSchema, {
name: 'text'
}, modelName);
}
return model;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment