/** * Get the string id for the storage * * @param int numericId * @return string|null either the storage id string or null if the numeric id is not known */ public static string getStorageId(long numericId) { using (var context = new NCContext()) { // TODO @focus var result = context.Storages.Where(o => o.numeric_id == numericId).ToList().FirstOrDefault(); return(result?.id); } }
/** * @param string internalPath * @param int time * @param int sizeDifference number of bytes the file has grown * @suppress SqlInjectionChecker */ public void propagateChange(string internalPath, int time, int sizeDifference = 0) { // Do not propogate changes in ignored paths foreach (var ignore in this.ignores) { if (internalPath.IndexOf(ignore, StringComparison.Ordinal) == 0) { return; } // if (strpos(internalPath, ignore) == 0) { // return; // } } var storageId = (int)this.storage.getStorageCache().getNumericId(); var parents = this.getParents(internalPath); if (this.inBatch) { foreach (var parent in parents) { this.addToBatch(parent, time, sizeDifference); } return; } var parentHashes = parents.Select(o => o.MD5ext()); var etag = Guid.NewGuid().ToString("N"); // since we give all folders the same etag we don't ask the storage for the etag using (var context = new NCContext()) { // using (var transaction = context.Database.BeginTransaction()) // { // // } var record = context.FileCaches.Single(o => o.storage == storageId && parentHashes.Contains(o.path_hash)); record.mtime = time; // builder.createFunction('GREATEST(' . builder.getColumnName('mtime') . ', ' . builder.createNamedParameter((int)time, IQueryBuilder::PARAM_INT) . ')')) record.etag = etag; context.Update(record); } if (sizeDifference != = 0) { // we need to do size separably so we can ignore entries with uncalculated size builder = this.connection.getQueryBuilder(); builder.update('filecache') .set('size', builder.func().add('size', builder.createNamedParameter(sizeDifference))) .where (builder.expr().eq('storage', builder.createNamedParameter(storageId, IQueryBuilder::PARAM_INT))) .andWhere(builder.expr().in ('path_hash', hashParams)) .andWhere(builder.expr().gt('size', builder.expr().literal(-1, IQueryBuilder::PARAM_INT))); builder.execute(); } }
/** * @param string[] storageIds */ public void loadForStorageIds(IList <string> storageIds) { var result = new List <StoragesTable>(); using (var context = new NCContext()) { // TODO @focus result = context.Storages.Where((item, index) => storageIds.Contains(item.id)).ToList(); } foreach (var storagesTable in result) { this.cache[storagesTable.id] = storagesTable; } }
/** * delete user from accounts table * * @param IUser user */ public void deleteUser(IUser user) { var uid = user.getUID(); AccountTable account = null; using (var context = new NCContext()) { account = context.Accounts.Find(uid); if (account != null) { context.Accounts.Remove(account); context.SaveChanges(); } } }
/** * @param bool isAvailable */ public void setAvailability(bool isAvailable) { using (var context = new NCContext()) { // TODO @focus var result = context.Storages.Where(o => o.id == this.storageId).ToList(); foreach (var r in result) { r.available = isAvailable ? 1 : 0; r.last_checked = TimeUtility.GetTimestampFormNow(); } context.SaveChanges(); } // sql = "UPDATE `*PREFIX*storages` SET `available` = ?, `last_checked` = ? WHERE `id` = ?"; // available = isAvailable ? 1 : 0; // OC_DB::executeAudited(sql, array(available, time(), this.storageId)); }
/** * update existing user in accounts table * * @param IUser user * @param array data */ protected void updateExistingUser(IUser user, JObject data) { var uid = user.getUID(); AccountTable account = null; using (var context = new NCContext()) { account = context.Accounts.Find(uid); if (account != null) { account.data = data.ToString(); context.SaveChanges(); } } //jsonEncodedData = json_encode(data); //query = this.connection.getQueryBuilder(); //query.update(this.table) // .set('data', query.createNamedParameter(jsonEncodedData)) // .where(query.expr().eq('uid', query.createNamedParameter(uid))) // .execute(); }
/** * get stored data from a given user * * @param IUser user * @return array */ public JObject getUser(IUser user) { var uid = user.getUID(); AccountTable account = null; using (var context = new NCContext()) { account = context.Accounts.Find(uid); } if (account == null) { var userData = this.buildDefaultUserRecord(user); this.insertNewUser(user, userData); return(userData); } //userDataArray = json_decode(result[0]['data'], true); //userDataArray = this.addMissingDefaultValues(userDataArray); return(JObject.Parse(account.data)); }
public DocumentInteractor(NCContext db) { this._db = db; }