예제 #1
0
        private string GetIndexName(IDatabaseInformation databaseInformation)
        {
            if (!databaseInformation.DatabaseName.Contains("{"))
            {
                indexName = databaseInformation.DatabaseName;
            }
            else
            {
                var dbInformationList = databaseInformation.DatabaseName.Split('{');
                var indexNumber       = Convert.ToInt32(dbInformationList[1].Replace("{", string.Empty).Replace("}", string.Empty).Trim());

                var indexRecord = client.CatIndices().Records
                                  .Where(r => r.Index.Contains(dbInformationList[0]))
                                  .OrderByDescending(r => Convert.ToInt32(r.Index.Split('_').LastOrDefault()))
                                  .Skip(indexNumber)
                                  .FirstOrDefault();

                if (indexRecord == null)
                {
                    throw new Exception($"Cannot gotton index name!({databaseInformation.DatabaseName})");
                }

                indexName = indexRecord.Index;
            }

            return(indexName);
        }
예제 #2
0
        public ElasticRepository(IDatabaseInformation databaseInformation)
        {
            client = Connection.GetElasticSearchClient();

            this.databaseInformation = databaseInformation;

            indexName = GetIndexName(databaseInformation);
            typeName  = databaseInformation.TableName;
        }
예제 #3
0
        private static string GetId(Guid databaseGuid)
        {
            if (databaseGuid == Guid.Empty)
            {
                throw new ArgumentException("Guid.Empty is not a valid MdbGuid value", "mdbGuid");
            }
            IDatabaseInformation databaseInformation = DatabaseInformationCache.Singleton.Get(databaseGuid);

            if (databaseInformation == null)
            {
                return(databaseGuid.ToString());
            }
            return(databaseInformation.DatabaseName);
        }
예제 #4
0
        protected override IMdbSystemMailboxPinger CreateOnCacheMiss(Guid key, ref bool shouldAdd)
        {
            shouldAdd = true;
            if (PingerCache.CreatePingerTestHook != null)
            {
                return(PingerCache.CreatePingerTestHook(key));
            }
            IDatabaseInformation databaseInformation = DatabaseInformationCache.Singleton.Get(key);

            if (databaseInformation != null)
            {
                ExTraceGlobals.DatabasePingerTracer.TraceDebug <string, Guid>((long)this.GetHashCode(), "[PingerCache.CreateOnCacheMiss] Acquire database information for Mdb: {0}, Guid: {1}", databaseInformation.DatabaseName, databaseInformation.DatabaseGuid);
                return(new MdbSystemMailboxPinger(key));
            }
            ExTraceGlobals.DatabasePingerTracer.TraceDebug <Guid>((long)this.GetHashCode(), "[PingerCache.CreateOnCacheMiss] Failed to get database information for Mdb Guid: {0}.  NOT creating pinger - caching null instead.", key);
            return(null);
        }
예제 #5
0
 public XpoDataAccessLayer(IDatabaseInformation dbInfo)
 {
     this._dbInfo = dbInfo ?? throw new ArgumentNullException(nameof(dbInfo));
 }
 public Elastic2SqlMapper(IDatabaseInformation sourceDbInfo, IDatabaseInformation targetDbInfo)
 {
     this.sourceDbInfo = sourceDbInfo;
     this.targetDbInfo = targetDbInfo;
 }
예제 #7
0
 public SqlServerRepository(IDatabaseInformation databaseInformation)
 {
     this.databaseInformation = databaseInformation;
     sqlConnection            = Connection.GetSqlConnection();
 }
예제 #8
0
 public SqlAccessLayer(IDatabaseInformation dbInfo)
 {
     this._dbInfo = dbInfo ?? Factory.CreateDefaultDatabaseInformation();
 }
예제 #9
0
 public Handler(IDatabaseInformation databaseInformation)
 {
     _databaseInformation = databaseInformation;
 }