/// <summary> /// required teting /// </summary> /// <param name="dbSchema"></param> /// <param name="objectName"></param> /// <returns></returns> private async Task <JMXSchema> SyncSchemaAsync(JMXObjectName objectName) { MdbContext mdb = Factory.GetMdbContext(); ILogger log = this.Logger; var schema = await _schemaRepo.GetSchemaAsync(objectName); //schema was syncronized //change this logic if (schema.SyncState == 1) { return(schema); } foreach (var o in GetDependences(schema)) { await SyncSchemaAsync(o); } var schemaFromDb = await GetObjectSchemaAsync(schema.DbObjectName.ToString()); bool createNew = (schemaFromDb == null); string[] sqlList; if (createNew) { sqlList = CreateNewStatements(schema); } else { // Compare with previos version of schema // error schema not found if db objects exists, but // synced version schema don't exists //var prevSchema = await GetSchemaInternalAsync(mdb, dbSchema, objectName, 1); //!!! not tested var prevSchema = schemaFromDb; sqlList = await CompareSchemasAsync(schema, prevSchema); } await mdb.BeginTransactionAsync(); try { foreach (var sql in sqlList) { log.LogDebug(sql); await mdb.ExecuteAsync(sql); } schema = await _schemaRepo.SetSchemaStateAsync(schema.ObjectName, 1); await mdb.CommitAsync(); } catch { mdb.RollBack(); throw; } return(schema); }
public async Task DropSchemaAsync(string objectName) { JMXObjectName name = objectName; using (var mdb = await MdbContext.CreateMdbContextAsync(_cn).ConfigureAwait(false)) { await _syncronizer.DropSchemaAsync(mdb, name.AreaName, name.ObjectName).ConfigureAwait(false); } lock (objLock) _schemaCache.Remove(name.ToString()); }
public override async Task DeleteSchemaAsync(string objectName) { JMXObjectName name = objectName; MdbContext mdb = Factory.GetMdbContext(); var schema = await GetSchemaAsync(mdb, name.AreaName, name.ObjectName); await mdb.ExecuteAsync(SQLite.DelSysSchemas, new MdbParameter("@ID", schema.ID)); _schemaCache.Remove(name.ToString()); }
public async virtual Task DeleteAsync(JMXObjectName objectName, long id) { JMXObject jo = await ReadAsync(objectName, id); if (jo == null) { throw new InvalidOperationException(Properties.Strings.S031_MetaStack_Core_ORM_JMXProvider_ObjectNotFound .ToFormat(objectName, id)); } await DeleteAsync(jo); }
public async Task <JMXSchema> SyncSchemaAsync(string objectName) { JMXObjectName name = objectName; using (var mdb = await MdbContext.CreateMdbContextAsync(_cn).ConfigureAwait(false)) { var schema = await _syncronizer.SyncSchemaAsync(mdb, name.AreaName, name.ObjectName).ConfigureAwait(false); lock (objLock) _schemaCache[schema.ObjectName] = schema; return(schema); } }
public override async Task <JMXSchema> GetSchemaAsync(string objectName) { JMXObjectName name = objectName; if (_schemaCache.TryGetValue(name, out JMXSchema schema)) { schema.SchemaRepo = this; return(schema); } schema = await GetSchemaAsync(Factory.GetMdbContext(), name.AreaName, name.ObjectName) .ConfigureAwait(false); _schemaCache.TryAdd(name, schema); return(schema); }
public override async Task <JMXObject> ReadAsync(JMXObjectName objectName, long id) { JMXObject o = new JMXObject(objectName, Factory); if (!_statementsCache.TryGetValue(objectName, out string sql)) { sql = GetReadStatement(o); _statementsCache.TryAdd(objectName, sql); } var mdb = Factory.GetMdbContext(); var drs = await mdb.GetReadersAsync(sql); for (int i = 0; i < drs.Length; i++) { var dr = drs[i]; dr.Dispose(); } return(o); }
public async Task <JMXSchema> GetSchemaAsync(string objectName) { JMXObjectName name = objectName; if (_schemaCache.TryGetValue(name, out JMXSchema schema)) { schema.SchemaProvider = this; return(schema); } using (var mdb = await MdbContext.CreateMdbContextAsync(_cn).ConfigureAwait(false)) { schema = await _syncronizer.GetSchemaAsync(mdb, name.AreaName, name.ObjectName).ConfigureAwait(false); lock (objLock) { if (!_schemaCache.ContainsKey(name)) { _schemaCache.Add(name, schema); } } } return(schema); }
public virtual Task <JMXObject> ReadAsync(JMXObjectName objectName, string alterKeyIndexName, params object[] parameters) { throw new NotImplementedException(); }
public virtual Task <JMXObject> ReadAsync(JMXObjectName objectName, long id) { throw new NotImplementedException(); }
public virtual JMXObject Read(JMXObjectName objectName, long id) { throw new NotImplementedException(); }
public virtual void Delete(JMXObjectName objectName, long id) => DeleteAsync(objectName, id).GetAwaiter().GetResult();
public override JMXObject Read(JMXObjectName objectName, long id) => ReadAsync(objectName, id) .GetAwaiter() .GetResult();
public JMXObject Read(JMXObjectName objectName, string alternameIndexName, params object[] parameters) { throw new NotImplementedException(); }
public Task DeleteAsync(JMXObjectName objectName, long id) { throw new NotImplementedException(); }
public void Delete(JMXObjectName objectName, long id) { throw new NotImplementedException(); }