| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import mongoose from 'mongoose';
- const BetOrderSchema = new mongoose.Schema({
- sid: { type: String, index: true },
- stake: { type: Number, default: 0 },
- platform: { type: String, default: 'polymarket', index: true },
- status: { type: String, default: 'created', index: true },
- side: { type: String, default: 'BUY', index: true },
- size: { type: Number },
- polymarketOrderID: { type: String, index: true },
- polymarketOrder: { type: mongoose.Schema.Types.Mixed },
- iorsValues: { type: mongoose.Schema.Types.Mixed },
- sol: { type: mongoose.Schema.Types.Mixed },
- stakeLimit: { type: mongoose.Schema.Types.Mixed },
- winLimit: { type: mongoose.Schema.Types.Mixed },
- iorsInfo: { type: mongoose.Schema.Types.Mixed },
- cpr: { type: mongoose.Schema.Types.Mixed },
- gameRelation: { type: mongoose.Schema.Types.Mixed },
- }, {
- timestamps: true,
- });
- BetOrderSchema.index({ createdAt: -1 });
- const BetOrder = mongoose.models.BetOrder || mongoose.model('BetOrder', BetOrderSchema);
- export const createBetOrder = async ({
- sid,
- stake,
- side = 'BUY',
- size,
- polymarketOrder,
- iorsValues,
- sol,
- stakeLimit,
- winLimit,
- iorsInfo,
- cpr,
- gameRelation,
- } = {}) => {
- const orderID = polymarketOrder?.orderID || polymarketOrder?.id;
- const status = polymarketOrder?.status || 'created';
- return BetOrder.create({
- sid: sid != null ? String(sid) : undefined,
- stake: Number(stake) || 0,
- status,
- side,
- size: Number.isFinite(Number(size)) ? Number(size) : undefined,
- polymarketOrderID: orderID,
- polymarketOrder,
- iorsValues,
- sol,
- stakeLimit,
- winLimit,
- iorsInfo,
- cpr,
- gameRelation,
- });
- }
- export const getBetOrders = async ({ limit = 100 } = {}) => {
- const queryLimit = Math.min(Math.max(Number(limit) || 100, 1), 500);
- return BetOrder.find({})
- .sort({ createdAt: -1 })
- .limit(queryLimit)
- .lean();
- }
- export const removeBetOrder = async (id) => {
- if (!id) {
- throw new Error('id is required', { cause: 400 });
- }
- const result = await BetOrder.findByIdAndDelete(id).lean();
- if (!result) {
- throw new Error('order not found', { cause: 404 });
- }
- return result;
- }
- export default {
- createBetOrder,
- getBetOrders,
- removeBetOrder,
- };
|