using CZFW.Framework.Model.ViewModel;
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Text;
namespace CZFW.MDB
{
public interface IPage
{
///
/// 通过表的schemaId获取列表
///
/// sid 网站id
///
///
///
///
///
///
///
///
///
BsonArray GetList(string sid, string pageKey, string type, string query = "{}", string projection=null, int pageIndex = 1, int pageSize = 20, string sort = "{}", bool userCusor = false);
BsonDocument Get(string pageKey, string dataKey, string type, string projection = null);
BsonDocument GetByName(string pageName, string dataKey, string type, string projection = null);
BsonDocument GetOne(string sid, string pageKey, string query, string type, string projection = null, string sort="{}");
BsonDocument GetOneByName(string sid, string pageName, string query = "{}", string projection = "{}", string sort="{}");
long GetCount(string sid, string pageName, string query = "{}");
///
/// 通过表名获取列表
///
/// sid 网站Id
///
/// 要获取的projection的类型。 对应schema下面的template下面的模板。该字段和projection功能一致。
/// 只需要使用一个字段。如果都传入非空,则以projection优先。如果projection为null,则以type为准
///
///
///
///
///
///
///
BsonArray GetListByName(string sid,string pageName, string type=null, string query = "{}", string projection = "{}", int pageIndex = 1, int pageSize = 20, string sort = "{}", bool useCusor = false);
//获取当前查询对应表。通常是在查询过程中该表被设置。
IMongoCollection GetCurrentTable();
///
/// 按条件随机获取相关记录
///
/// siteName
/// 表名,内部不做模板名称处理
/// 需要排除的Id,通常是当前记录本身的Id
/// 查询条件
/// 返回字段
/// 获取数据的条数
///
BsonArray GetRelated(string sid, string pageName, string excludeId = null, string query = "{}", string projection = "{}", int size = 4);
ResultModel Inc(string pageName, string key, string field, int amount);
}
}