123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- using CZFW.Framework.Model.ViewModel;
- using CZFW.MDB.Util;
- using MongoDB.Bson;
- using MongoDB.Driver;
- using Newtonsoft.Json.Linq;
- using System;
- namespace CZFW.MDB
- {
- public class SchemaRepository : ISchemaRepository
- {
- IMongoRepository _repository;
- string schemaTableName = "schema";
- public SchemaRepository(IMongoRepository rep)
- {
- _repository = rep;
- _repository.SetCurrentTable(schemaTableName);
- }
- public IMongoCollection<BsonDocument> GetCurrentTable()
- {
- return _repository.CurrentTable;
- }
- public ResultModel Create(string tplId, string objJson)
- {
- var obj = JObject.Parse(objJson);
- string name = obj.GetValue("name").ToString();
- if (!string.IsNullOrWhiteSpace(tplId))
- {
- obj.Add(Constants.TPL_NAME_FIELD, tplId);
- name = $"{tplId}_{name}";
- obj["name"] = name;
- }
- objJson = obj.ToString();
- //if (_repository.TableExists(name))
- // return new ResultModel("同名的表已经存在系统中");
- _repository.SetCurrentTable(schemaTableName);
- var tp = _repository.Insert(objJson);
- if (tp.Success)
- {
- var tp2 = _repository.CreateTable(name);
- return tp2;
- }
- else
- return tp;
- }
- public BsonDocument GetHeader(string key, string type, out string name)
- {
- var data = _repository.Get(key).CZToJson();
- var jobj = JObject.Parse(data);
- name = jobj.GetValue("name").ToString();
- var backEndTableTpl = jobj.SelectToken($"template.{type}").ToString();
- var bson = BsonDocument.Parse(backEndTableTpl);
- return bson;
- }
- public BsonDocument GetHeaderByName(string name, string type, out string id)
- {
- var data = GetByName(name).CZToJson();
- var jobj = JObject.Parse(data);
- id = jobj.GetValue("_id").ToString();
- var backEndTableTpl = jobj.SelectToken($"template.{type}").ToString();
- var bson = BsonDocument.Parse(backEndTableTpl);
- return bson;
- }
- public BsonDocument GetByName(string name, string projection = "{}")
- {
- var filter = new BsonDocument("name", name);
- var res = _repository.CurrentTable.Find(filter).Project(projection).FirstOrDefault();
- return res;
- }
- public string GetIdByName(string name)
- {
- var data = _repository.GetList($"{{name:\"{name}\"}}", "{_id:1}");
- if (data.Count > 0)
- {
- return data[0]["_id"].ToString();
- }
- return null;
- }
- public string GetNameById(string key)
- {
- var schema = _repository.Get(key, "{name:1}");
- var name = schema["name"].AsString;
- return name;
- }
- public BsonDocument GetSchema(string key)
- {
- var res = _repository.Get(key);
- return res;
- }
- public BsonDocument GetSchemaByName(string name)
- {
- throw new NotImplementedException();
- }
- public BsonArray GetSchemaList(string tplId, string query = "{}",string proj= "{name:1, title:1,max_page_number:1,page_type:1,icon:1,sort_order:1}", int pageIndex = 1, int pageSize = 100, string sort = "{}")
- {
- var qry = JObject.Parse(query);
- qry.Add(Constants.TPL_NAME_FIELD, tplId);
- query = qry.ToString();
- var projection = proj;
- var res = _repository.GetList(query, projection, pageIndex, pageSize, sort);
- return res;
- }
- public BsonDocument GetOne(string tplId, string query = "{}", string proj = "{name:1, title:1,max_page_number:1,page_type:1,icon:1}",string sort = "{}")
- {
- var qry = JObject.Parse(query);
- qry.Add(Constants.TPL_NAME_FIELD, tplId);
- query = qry.ToString();
- var projection = proj;
- var res = _repository.GetOne(query, projection, sort);
- return res;
- }
- public ResultModel Remove(string key)
- {
- _repository.SetCurrentTable(schemaTableName);
- var table = _repository.Get(key);
- var tableName = table.GetFieldValue("name").AsString;
- if (tableName != null)
- {
- var tp = _repository.RemoveTable(tableName);
- }
- var res = _repository.Remove(key);
- return res;
- }
- public ResultModel Replace(string key, string objJson)
- {
- _repository.SetCurrentTable(schemaTableName);
- var res = _repository.Replace(key, objJson);
- return res;
- }
- //public ResultModel Update(string key, string objJson)
- //{
- // throw new NotImplementedException();
- //}
- public BsonDocument GetSchemaField(string qry, string prj)
- {
- _repository.SetCurrentTable(schemaTableName);
- var res = _repository.GetList(qry, prj, 1, 1);
- if (res.Count > 0)
- return res.ToList()[0].AsBsonDocument;
- else
- return BsonDocument.Parse("{}");
- }
- }
- }
|