public static T ToModel <T>(this IViewRow row, Site site, Func <Site, string, T> createModel) where T : IPersistable { var rawValue = row.Info["value"] as Dictionary <string, object>; var json = JsonConvert.SerializeObject(rawValue); var rawKey = ModelExtensions.GetRawDocumentKey(row.ItemId); var dummy = createModel(site, rawKey); var model = JsonToObject <T>(json); ((IPersistable)model).Init(dummy); return(model); }
public static T ToModel <T>(Site site, string key, string json, Func <Site, string, T> createModel) where T : IPersistable { var rawKey = ModelExtensions.GetRawDocumentKey(key); var dummy = createModel(site, rawKey); var model = JsonToObject <T>(json); ((IPersistable)model).Init(dummy); if (model is ISiteObject) { ((ISiteObject)model).Site = site; } return(model); }
public static T QueryByKey <T>(Site site, string key, Func <Site, string, T> createModel) where T : IPersistable { var bucket = site.GetClient(); object json; var result = bucket.ExecuteTryGet(key, out json); if (result.HasValue) { var rawKey = ModelExtensions.GetRawDocumentKey(key); var obj = ModelExtensions.JsonToObject <T>(json.ToString()); obj.Init(createModel(site, rawKey)); return(obj); } else { return(default(T)); } }