コード例 #1
0
 public DataExtractor(DataExtractorConfiguration configuration, PostgreSqlDbContext dbContext,
                      IBetsApiClient betsApiClient)
 {
     _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
     _dbContext     = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
     _betsApiClient = betsApiClient ?? throw new ArgumentNullException(nameof(betsApiClient));
 }
コード例 #2
0
        public BaseDbContext Create(IDbConfiguration dbConfiguration)
        {
            var dbContextOptions = PostgreSqlDbContextOptionsFactory.Create(dbConfiguration);
            var context          = new PostgreSqlDbContext(dbContextOptions);

            return(context);
        }
コード例 #3
0
        public static void TestPostgreSql()
        {
            string       connectString = "server=192.168.58.131;port=5432;user id=xiaozhang1;password=123456;database=testdb;";
            SqlDbContext db            = new PostgreSqlDbContext(connectString);

            //数据执行回调函数
            db.ExecuteDbCallBack = (cmdText, dbParms) => {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append("sql:" + cmdText);
                if (dbParms != null)
                {
                    foreach (IDbDataParameter param in dbParms)
                    {
                        stringBuilder.Append("paramName:" + param.ParameterName + ",paramValue:" + param.Value.ToString());
                    }
                }
                stringBuilder.Append("\n\n");
                Console.Write(stringBuilder.ToString());
            };

            var dbTest = new DbTest(db);

            dbTest.DeleteAll();
            dbTest.Insert();
            dbTest.Delete();
            dbTest.Update();
            dbTest.Query();
            dbTest.OrtherQuery();
            dbTest.OrtherNoneQuery();
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: inrg/SmartDb.NetCore
        public static void TestPostgreSql()
        {
            string       connectString = "server=192.168.58.131;port=5432;user id=xiaozhang1;password=123456;database=testdb;";
            SqlDbContext db            = new PostgreSqlDbContext(connectString);

            //SmartDb框架提供一个记录日志委托用来记录执行SQL及参数信息,ConsoleWriteInfo在控制台输出,大家可以根据自己需要自己定义方法传给DbHelper.logAction会自动进行调用
            db.DbHelper.logAction = db.DbHelper.ConsoleWriteInfo;

            var dbTest = new DbTest(db);

            dbTest.DeleteAll();
            dbTest.Insert();
            dbTest.Delete();
            dbTest.Update();
            dbTest.Query();
            dbTest.OrtherQuery();
            dbTest.OrtherNoneQuery();
        }
コード例 #5
0
 public FaceRegistrationService(PostgreSqlDbContext databaseContext)
 {
     this._DatabaseContext = databaseContext;
 }
コード例 #6
0
        public async Task <IActionResult> Update(Guid id, [FromBody] Tenant tenant, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (tenant == null || !tenant.Id.Equals(id))
            {
                return(BadRequest());
            }

            try
            {
                cancellationToken.ThrowIfCancellationRequested();
                var e = await dataSource.DbContext.FindAsync <Tenant>(new object[] { id }, cancellationToken);

                var options          = configuration.GetSection("MultitenancyOptions");
                var deploymentMode   = options.GetValue <DeploymentModes>("DeploymentMode");
                var connectionString = configuration.GetConnectionString(options.GetValue <string>("ConnectionString"));

                if (deploymentMode == DeploymentModes.Multi)
                {
                    tenant.IsIsolated = true;
                }
                else if (deploymentMode == DeploymentModes.Single)
                {
                    tenant.ConnectionString = connectionString;
                }

                tenant.DateModified = DateTime.UtcNow;
                dataSource.DbContext.Entry <Tenant>(e).CurrentValues.SetValues(tenant);
                await dataSource.DbContext.SaveChangesAsync(cancellationToken);

                /*
                 *  Update tenant in isolation mode
                 */
                if (tenant.IsIsolated)
                {
                    DbContext dbContext = dataSource.DbContext;

                    switch (tenant.Engine)
                    {
                    case DatabaseEngine.SqlServer:
                        dbContext = new SqlServerDbContext(configuration, tenant, new DbContextOptions <SqlServerDbContext>());
                        break;

                    case DatabaseEngine.MySql:
                        dbContext = new MySqlDbContext(configuration, tenant, new DbContextOptions <MySqlDbContext>());
                        break;

                    case DatabaseEngine.PostgreSql:
                        dbContext = new PostgreSqlDbContext(configuration, tenant, new DbContextOptions <PostgreSqlDbContext>());
                        break;
                    }

                    try
                    {
                        var hostedTenant = await dbContext.Set <Tenant>()
                                           .Where(ht => ht.HostName == tenant.HostName)
                                           .FirstOrDefaultAsync();

                        if (hostedTenant != null)
                        {
                            dbContext.Entry <Tenant>(hostedTenant).State = EntityState.Modified;
                            hostedTenant.Active                = tenant.Active;
                            hostedTenant.ConnectionString      = tenant.ConnectionString;
                            hostedTenant.DateCreated           = tenant.DateCreated;
                            hostedTenant.DateModified          = tenant.DateModified;
                            hostedTenant.DateDeleted           = tenant.DateDeleted;
                            hostedTenant.Deleted               = tenant.Deleted;
                            hostedTenant.DeploymentStatus      = tenant.DeploymentStatus;
                            hostedTenant.Description           = tenant.Description;
                            hostedTenant.Name                  = tenant.Name;
                            hostedTenant.HostName              = tenant.HostName;
                            hostedTenant.Edition               = tenant.Edition;
                            hostedTenant.Engine                = tenant.Engine;
                            hostedTenant.IsIsolated            = tenant.IsIsolated;
                            hostedTenant.IsTenantAdministrator = tenant.IsTenantAdministrator;
                            hostedTenant.SubscriptionId        = tenant.SubscriptionId;
                            hostedTenant.Theme                 = tenant.Theme;
                            await dbContext.SaveChangesAsync(cancellationToken);
                        }
                    }
                    catch (Exception ex)
                    {
                        return(new AcceptedResult(nameof(Update), ex.Message + ". " + ex.InnerException?.Message));
                    }
                }

                HttpContext.Response.Headers.Add("ConcurrencyStamp", Convert.ToBase64String(tenant.ConcurrencyStamp));
                HttpContext.Response.Headers.Add("ConcurrencyTimeStamp", tenant.ConcurrencyTimeStamp.ToString());
            }
            catch (DbUpdateException ex)
            {
                if (ex.InnerException != null)
                {
                    return(StatusCode(StatusCodes.Status500InternalServerError, new { success = false, message = ex.InnerException.Message, details = ex.InnerException }));
                }
                return(StatusCode(StatusCodes.Status500InternalServerError, new { success = false, message = ex.Message, details = ex }));
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    return(StatusCode(StatusCodes.Status500InternalServerError, new { success = false, message = ex.InnerException.Message, details = ex.InnerException }));
                }
                return(StatusCode(StatusCodes.Status500InternalServerError, new { success = false, message = ex.Message, details = ex }));
            }

            return(new NoContentResult());
        }
コード例 #7
0
 public ExecuterService(ILogger <ExecuterService> logger, PostgreSqlDbContext context, IOptions <List <PipeLineDefinition> > pipes)
 {
     _logger  = logger;
     _context = context;
     _pipes   = pipes;
 }
コード例 #8
0
 public TrendingTagsCached(PostgreSqlDbContext context, IOptionsMonitor <CachedOptions> optionsAccessor) :
     base(optionsAccessor)
 {
     this.context = context;
 }
コード例 #9
0
 public PostgreSqlMessageData(string ConnectionString, ILogger <PostgreSqlMessageData> logger, ILogger <PostgreSqlDbContext> loggerDb)
 {
     _db     = new PostgreSqlDbContext(ConnectionString, loggerDb);
     _logger = logger;
 }
コード例 #10
0
 public AccountPostgreSqlRepository(PostgreSqlDbContext dbContext)
     : base(dbContext)
 {
 }
コード例 #11
0
        public static void EnsureSeeded(this PostgreSqlDbContext context, IOptions <SeedingOptions> optionsAccessor)
        {
            string userMediaDirectory = "wwwroot" + ds + "media" + ds + "user";
            var    options            = optionsAccessor.Value;

            if (options.SeedDummyData)
            {
                SeedDummyData();
            }

            void SeedDummyData()
            {
                string dummyDataDirectory = "Resources" + ds + "DummyData" + ds;

                if (!context.Users.Any())
                {
                    var Users = JsonConvert.DeserializeObject <List <ApplicationUser> >(File.ReadAllText(
                                                                                            dummyDataDirectory + "Users.json"));
                    context.AddRange(Users);

                    var UserFollows = JsonConvert.DeserializeObject <List <UserFollow> >(File.ReadAllText(
                                                                                             dummyDataDirectory + "UserFollows.json"));
                    context.AddRange(UserFollows);

                    var Posts = JsonConvert.DeserializeObject <List <Post> >(File.ReadAllText(
                                                                                 dummyDataDirectory + "Posts.json"));
                    context.AddRange(Posts);
                    context.Database.ExecuteSqlRaw("ALTER SEQUENCE \"Posts_Id_seq\" RESTART WITH 65");

                    var ImageAttachments = JsonConvert.DeserializeObject <List <ImageAttachment> >(
                        File.ReadAllText(dummyDataDirectory + "ImageAttachments.json"));
                    context.AddRange(ImageAttachments);

                    var UserPosts = JsonConvert.DeserializeObject <List <UserPost> >(
                        File.ReadAllText(dummyDataDirectory + "UserPosts.json"));
                    context.AddRange(UserPosts);

                    var Comments = JsonConvert.DeserializeObject <List <Comment> >(
                        File.ReadAllText(dummyDataDirectory + "Comments.json"));
                    context.AddRange(Comments);
                    context.Database.ExecuteSqlRaw("ALTER SEQUENCE \"Comments_Id_seq\" RESTART WITH 37");

                    var DirectChats = JsonConvert.DeserializeObject <List <DirectChat> >(
                        File.ReadAllText(dummyDataDirectory + "DirectChats.json"));
                    context.AddRange(DirectChats);
                    context.Database.ExecuteSqlRaw("ALTER SEQUENCE \"Chats_Id_seq\" RESTART WITH 2");

                    var UserChats = JsonConvert.DeserializeObject <List <UserChat> >(
                        File.ReadAllText(dummyDataDirectory + "UserChats.json"));
                    context.AddRange(UserChats);

                    var Messages = JsonConvert.DeserializeObject <List <Message> >(
                        File.ReadAllText(dummyDataDirectory + "Messages.json"));
                    context.AddRange(Messages);
                    context.Database.ExecuteSqlRaw("ALTER SEQUENCE \"Messages_Id_seq\" RESTART WITH 2");

                    context.SaveChanges();
                    DirectChats[0].LastMessage = Messages[0];
                    context.Chats.UpdateRange(DirectChats);
                    context.SaveChanges();

                    CopyDirectoryRecursively(dummyDataDirectory + "media", userMediaDirectory);
                }
            }

            void CopyDirectoryRecursively(string sourceDirName, string destDirName)
            {
                var dir = new DirectoryInfo(sourceDirName);

                if (dir.Exists)
                {
                    var dirs = dir.GetDirectories();

                    if (!Directory.Exists(destDirName))
                    {
                        Directory.CreateDirectory(destDirName);
                    }

                    foreach (FileInfo file in dir.GetFiles())
                    {
                        string destPath = Path.Combine(destDirName, file.Name);

                        var destFile = new FileInfo(destPath);

                        if (!destFile.Exists)
                        {
                            file.CopyTo(destPath, true);
                        }
                    }

                    foreach (DirectoryInfo subdir in dirs)
                    {
                        string destPath = Path.Combine(destDirName, subdir.Name);
                        CopyDirectoryRecursively(subdir.FullName, destPath);
                    }
                }
            }
        }
コード例 #12
0
 public HistoryPostgreSqlRepository(PostgreSqlDbContext dbContext)
     : base(dbContext)
 {
 }
コード例 #13
0
 public PopularUsersCached(PostgreSqlDbContext context, IOptionsMonitor <CachedOptions> optionsAccessor) :
     base(optionsAccessor)
 {
     this.context = context;
 }
コード例 #14
0
 public RoleController(PostgreSqlDbContext postgreSqlDbContext)
 {
     _postgreSqlDbContext = postgreSqlDbContext;
 }