/**
 * 数据库操作
 */
const dbName = require("./config");

let db = uniCloud.database();
let _ = db.command;
let $ = _.aggregate;

class Dao {
	async count(whereJson) {
		let dbRes = await db.collection(dbName.uniIdUsers).where(whereJson).count()
		return dbRes && dbRes.total ? dbRes.total : 0;
	}

	async countNewUserOrder(obj) {
		let {
			whereJson,
			status
		} = obj;
		let dbRes = await db.collection(dbName.uniIdUsers).aggregate()
			.match(whereJson)
			.lookup({
				from: dbName.uniPayOrders,
				let: {
					user_id: '$_id',
				},
				pipeline: $.pipeline()
					.match(_.expr($.and([
						$.eq(['$user_id', '$$user_id']),
						$.in(['$status', status])
					])))
					.limit(1)
					.done(),
				as: 'order',
			})
			.unwind({
				path: '$order',
			})
			.group({
				_id: null,
				count: {
					$addToSet: '$_id'
				},
			})
			.addFields({
				count: {
					$size: '$count'
				}
			})
			.end()
		try {
			return dbRes.data[0].count;
		} catch (err) {
			return 0;
		}

	}
}


module.exports = new Dao();