예제 #1
0
        public override IEnumerable <IDictionary <string, object> > RunQuery(SimpleQuery query)
        {
            var connection = _connectionProvider.CreateConnection();

            return(new QueryBuilder(this).Build(query)
                   .GetCommand(connection)
                   .ToBufferedEnumerable(connection));
        }
예제 #2
0
 private IEnumerable <DataRow> GetSchema(string collectionName, params string[] constraints)
 {
     using (var cn = _connectionProvider.CreateConnection())
     {
         cn.Open();
         return(cn.GetSchema(collectionName, constraints).AsEnumerable());
     }
 }
예제 #3
0
        public async Task <Cart> GetAsync(Guid cartId)
        {
            using (IDbConnection connection = _connectionProvider.CreateConnection())
            {
                const string sql = "SELECT TOP 1 * FROM Cart WHERE Id = @Id;";

                return(await connection.QueryFirstAsync <Cart>(sql, new { Id = cartId }));
            }
        }
예제 #4
0
        public async Task <int> AddAsync(User entity, string clientId)
        {
            var sql = "InsertUsers";

            using (var connection = _provider.CreateConnection(clientId))
            {
                return(await connection.Result.ExecuteAsync(
                           sql,
                           new { userName = entity.UserName, password = entity.Password },
                           commandType : CommandType.StoredProcedure));
            }
        }
 public void Adicionar(FormaPagamento formaPagamento)
 {
     using (var con = _provider.CreateConnection())
     {
         con.Execute($@"INSERT INTO formaPagamento 
                     (Descricao) VALUES
                     (@Descricao)",
                     new
         {
             Descricao = formaPagamento.Descricao
         });
     }
 }
예제 #6
0
        public override IEnumerable <IDictionary <string, object> > RunQuery(SimpleQuery query, out IEnumerable <SimpleQueryClauseBase> unhandledClauses)
        {
            if (query.Clauses.OfType <WithCountClause>().Any())
            {
                return(RunQueryWithCount(query, out unhandledClauses));
            }

            var connection = _connectionProvider.CreateConnection();

            return(new QueryBuilder(this).Build(query, out unhandledClauses)
                   .GetCommand(connection)
                   .ToEnumerable(connection));
        }
예제 #7
0
 public void Adicionar(Cliente cliente)
 {
     using (var con = _provider.CreateConnection())
     {
         con.Execute($@"INSERT INTO clientes 
                     (CPF, Nome, Telefone) VALUES
                     (@CPF, @Nome, @Telefone)",
                     new
         {
             CPF      = cliente.CPF,
             Nome     = cliente.Nome,
             Telefone = cliente.Telefone
         });
     }
 }
예제 #8
0
 public void Adicionar(VendaItem venda)
 {
     using (var con = _provider.CreateConnection())
     {
         con.Execute($@"INSERT INTO vendaItem 
                     (VendaId, ProdutoId, Quantidade) VALUES
                     (@VendaId, @ProdutoId, @Quantidade)",
                     new
         {
             VendaId    = venda.VendaId,
             ProdutoId  = venda.ProdutoId,
             Quantidade = venda.Quantidade
         });
     }
 }
 public void Adicionar(Produto produto)
 {
     using (var con = _provider.CreateConnection())
     {
         con.Execute($@"INSERT INTO produtos 
                     (Descricao, Preco, Categoria) VALUES
                     (@Descricao, @Preco, @Categoria)",
                     new
         {
             Descricao = produto.Descricao,
             Preco     = produto.Preco,
             Categoria = produto.Categoria
         });
     }
 }
예제 #10
0
        public async Task <QueryResponse <ScheduleViewModel[]> > Handle(GetScheduleQuery message)
        {
            using (var conn = _connectionProvider.CreateConnection())
            {
                const string sql     = @"
SELECT SE.Id AS SessionId
      ,SC.Id AS ScreenId
	  ,SC.Name AS ScreenName
	  ,F.Id AS FilmId
	  ,F.Title AS FilmTitle
	  ,F.DurationInMinutes AS FilmDuration
FROM [session].[Sessions] SE
    INNER JOIN [cine].[Screens] SC ON SE.ScreenId = SC.Id
	INNER JOIN [cine].[Films] F ON SE.FilmId = F.Id
WHERE SC.CinemaId = @cinemaId AND SE.[Start] BETWEEN @start AND @end
";
                var          cinemas = await conn.QueryAsync <ScheduleViewModel>(sql, new
                {
                    CinemaId = message.CinemaId,
                    Start    = message.Date.Date,
                    End      = message.Date.Date.AddDays(1).AddSeconds(-1)
                });

                return(new QueryResponse <ScheduleViewModel[]>
                {
                    Data = cinemas.ToArray()
                });
            }
        }
예제 #11
0
 public DbContext(IConnectionProvider connectionProvider)
 {
     _connectionProvider = connectionProvider;
     _connection         = _connectionProvider.CreateConnection();
     _connection.Open();
     _transaction = _connection.BeginTransaction();
 }
예제 #12
0
        protected virtual string Execute(IQuery query,
                                         IDictionary <string, string> parameters, IConnectionProvider provider)
        {
            using (IDbConnection connection = provider.CreateConnection())
                using (var builder = new CommandBuilder(connection)) {
                    builder
                    .SetText(query.QueryText)
                    .SetType(GetCommandType(query.Options))
                    .SetTimeout(query.Options
                                .GetInteger(Strings.kCommandTimeoutOption, 30));

                    BindParameters(builder, query.Parameters, parameters);

                    string preferred_json_collection = query.Options
                                                       .GetString(Strings.kJsonCollectionOption,
                                                                  Strings.kDefaultJsonCollection);

                    IDbCommand cmd = builder.Build();
                    connection.Open();
                    string response =
                        (query.QueryMethod == QueryMethod.Get)
            ? ExecuteReader(cmd, query, preferred_json_collection)
            : ExecuteNonQuery(cmd, query, preferred_json_collection);
                    connection.Close();
                    return(response);
                }
        }
    protected virtual string Execute(IQuery query,
      IDictionary<string, string> parameters, IConnectionProvider provider) {
      using (IDbConnection connection = provider.CreateConnection())
      using (var builder = new CommandBuilder(connection)) {
        builder
          .SetText(query.QueryText)
          .SetType(GetCommandType(query.Options))
          .SetTimeout(query.Options
            .GetInteger(Strings.kCommandTimeoutOption, 30));

        BindParameters(builder, query.Parameters, parameters);

        string preferred_json_collection = query.Options
          .GetString(Strings.kJsonCollectionOption,
            Strings.kDefaultJsonCollection);

        IDbCommand cmd = builder.Build();
        connection.Open();
        string response =
          (query.QueryMethod == QueryMethod.Get)
            ? ExecuteReader(cmd, query, preferred_json_collection)
            : ExecuteNonQuery(cmd, query, preferred_json_collection);
        connection.Close();
        return response;
      }
    }
예제 #14
0
        protected override UserPassword RetrieveUserPassword(string username)
        {
            IConnectionProvider connectivity = ApplicationManager.Current.ServiceProvider.GetService <IConnectionProvider>();

            if (connectivity == null)
            {
                throw new Exception("Connectivity service not found.");
            }

            UserPassword userPass = new UserPassword();

            using (MySqlConnection connection = (MySqlConnection)connectivity.CreateConnection())
            {
                connection.Open();
                string sql =
                    @"SELECT Password, PasswordKey " +
                    "FROM User u " +
                    "JOIN Membership m ON m.userId=u.id " +
                    "WHERE u.Name=@name";
                MySqlCommand command = new MySqlCommand(sql, connection);
                command.Parameters.AddWithValue("@name", username);
                MySqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {
                    userPass.Password    = (string)reader["Password"];
                    userPass.PasswordKey = Convert.FromBase64String((string)reader["PasswordKey"]);
                }
            }
            return(userPass);
        }
 public void Adicionar(User user)
 {
     using (var con = _provider.CreateConnection())
     {
         con.Execute($@"INSERT INTO usuarios 
                     (id, AccessKey, Nome, CPF, Tipo) VALUES
                     (@Id, @AccessKey, @Nome, @CPF, @Tipo)",
                     new
         {
             Id        = user.Id,
             AccessKey = user.AccessKey,
             Nome      = user.Nome,
             CPF       = user.CPF,
             Tipo      = user.Tipo
         });
     }
 }
예제 #16
0
 public void Adicionar(Venda venda)
 {
     using (var con = _provider.CreateConnection())
     {
         con.Execute($@"INSERT INTO venda 
                     (ValorTotal, IdUsuario, CpfCliente, IdFormaPagamento, Encomenda, Data) VALUES
                     (@ValorTotal, @IdUsuario, @CpfCliente, @IdFormaPagamento, @Encomenda, @Data)",
                     new
         {
             ValorTotal       = venda.ValorTotal,
             IdUsuario        = venda.IdUsuario,
             CpfCliente       = venda.CpfCliente,
             IdFormaPagamento = venda.IdFormaPagamento,
             Encomenda        = venda.Encomenda,
             Data             = venda.Data
         });
     }
 }
예제 #17
0
        public async Task <IReadOnlyCollection <Product> > GetAllAsync()
        {
            using (IDbConnection connection = _connectionProvider.CreateConnection())
            {
                IEnumerable <Product> products = await connection.GetAllAsync <Product>();

                return(products.ToArray());
            }
        }
예제 #18
0
 private void FillSchemaCache()
 {
     using (var connection = _connectionProvider.CreateConnection())
     {
         connection.Open();
         FillTableCache(connection);
         FillColumnCache(connection);
         FillForeignKeyCache(connection);
         connection.Close();
     }
 }
예제 #19
0
        public async Task <GetCinemasResponse> Handle(GetCinemasQuery message)
        {
            using (var conn = _connectionProvider.CreateConnection())
            {
                const string sql     = @"
SELECT C.Id, C.Name FROM cine.Cinemas C
";
                var          cinemas = await conn.QueryAsync <CinemaViewModel>(sql);

                return(new GetCinemasResponse(cinemas.ToArray()));
            }
        }
        public void TestCreateConnection()
        {
            provider = new MsSqlConnectionProvider(connectionStringName);

            object actual = provider.CreateConnection();

            Assert.IsNotNull(actual);
            Assert.IsInstanceOfType(typeof (IDbConnection), actual);

            Assert.IsFalse(string.IsNullOrEmpty(((IDbConnection)actual).ConnectionString));

            Assert.AreEqual(ConnectionState.Closed, ((IDbConnection) actual).State);
        }
 private string GetServerVersion(IConnectionProvider connectionProvider)
 {
     using (var connection = connectionProvider.CreateConnection())
     {
         using (var command = connection.CreateCommand())
         {
             command.CommandType = CommandType.Text;
             command.CommandText = "SELECT VERSION();";
             connection.OpenIfClosed();
             return(command.ExecuteScalar() as string);
         }
     }
 }
 private string GetServerVersion(IConnectionProvider connectionProvider)
 {
     using (var connection = connectionProvider.CreateConnection())
     {
         using (var command = connection.CreateCommand())
         {
             command.CommandType = CommandType.Text;
             command.CommandText = "SELECT VERSION();";
             connection.OpenIfClosed();
             return command.ExecuteScalar() as string;
         }
     }
 }
예제 #23
0
        public void TestCreateConnection()
        {
            provider = new MySqlConnectionProvider(connectionStringName);

            object actual = provider.CreateConnection();

            Assert.IsNotNull(actual);
            Assert.IsInstanceOfType(typeof(IDbConnection), actual);

            Assert.IsFalse(string.IsNullOrEmpty(((IDbConnection)actual).ConnectionString));

            Assert.AreEqual(ConnectionState.Closed, ((IDbConnection)actual).State);
        }
예제 #24
0
        private DataTable SelectToDataTable(string sql)
        {
            var dataTable = new DataTable();

            using (var cn = _connectionProvider.CreateConnection() as SqlCeConnection)
            {
                using (var adapter = new SqlCeDataAdapter(sql, cn))
                {
                    adapter.Fill(dataTable);
                }
            }

            return(dataTable);
        }
예제 #25
0
        public async Task <IReadOnlyCollection <CartItem> > GetCartItemsAsync()
        {
            using (IDbConnection connection = _connectionProvider.CreateConnection())
            {
                IEnumerable <CartItem> carts = await connection.GetAllAsync <CartItem>();

                return(carts.ToArray());
            }
        }
 public Comissao Adicionar(Comissao comissao)
 {
     using (var con = _provider.CreateConnection())
     {
         var valor = con.QueryFirstOrDefault <float>($@"SELECT SUM(ValorTotal) FROM venda
                     WHERE IdUsuario = @IdUsuario AND data BETWEEN @DataInicio AND @DataFim
                     GROUP BY idUsuario",
                                                     new
         {
             IdUsuario  = comissao.IdUsuario,
             DataInicio = comissao.DataInicio,
             DataFim    = comissao.DataFim
         });
         con.Execute($@"INSERT INTO comissao 
                     (idUsuario, dataInicio, dataFim, valor) VALUES
                     (@IdUsuario, @DataInicio, @DataFim, @Valor)",
                     new
         {
             IdUsuario  = comissao.IdUsuario,
             DataInicio = comissao.DataInicio,
             DataFim    = comissao.DataFim,
             Valor      = valor * 0.1
         });
         return(con.QueryFirstOrDefault <Comissao>(@"
                 SELECT id, idUsuario, dataInicio, dataFim, valor
                 FROM comissao
                 WHERE IdUsuario = @IdUsuario AND 
                       DataInicio = @DataInicio AND
                       DataFim = @DataFim",
                                                   new
         {
             IdUsuario = comissao.IdUsuario,
             DataInicio = comissao.DataInicio,
             DataFim = comissao.DataFim,
         }));
     }
 }
예제 #27
0
        public IDbConnection CreateConnection()
        {
            if (_sharedConnection != null)
            {
                return(_sharedConnection);
            }
            var connection = _connectionModifier(_connectionProvider.CreateConnection());
            var args       = ConnectionCreated.Raise(this, () => new ConnectionCreatedEventArgs(connection));

            if (args != null && args.OverriddenConnection != null)
            {
                return(args.OverriddenConnection);
            }
            return(connection);
        }
        protected virtual bool CreateNewConnection()
        {
            IPooledDbConnection conn = connectionProvider.CreateConnection(this, context.ConnectionSettings, out error);

            if (conn == null || !conn.IsOpen)
            {
                hasErrors = true;
                return(false);
            }

            hasErrors = false;
            lock (sync)
                freeConnections.Enqueue(conn);

            return(true);
        }
예제 #29
0
        public async Task <QueryResponse <CinemaViewModel[]> > Handle(GetCinemasQuery message)
        {
            using (var conn = _connectionProvider.CreateConnection())
            {
                // TODO: Add paging, sorting and filtering
                const string sql     = @"
SELECT TOP 10 C.Id, C.Name 
FROM cine.Cinemas C
";
                var          cinemas = await conn.QueryAsync <CinemaViewModel>(sql);

                return(new QueryResponse <CinemaViewModel[]>
                {
                    Data = cinemas.ToArray()
                });
            }
        }
예제 #30
0
        public async Task <QueryResponse <CinemaViewModel> > Handle(GetCinemaQuery message)
        {
            using (var conn = _connectionProvider.CreateConnection())
            {
                const string sql    = @"
SELECT C.Id, C.Name
FROM cine.Cinemas C
WHERE C.Id = @id
";
                var          cinema = await conn.QueryFirstOrDefaultAsync <CinemaViewModel>(sql, new { Id = message.CinemaId });

                return(new QueryResponse <CinemaViewModel>
                {
                    Data = cinema
                });
            }
        }
예제 #31
0
        public virtual bool Initialize()
        {
            if (isInitialized)
            {
                return(true);
            }

            connection = connectionProvider.CreateConnection(this, context.ConnectionSettings, out error);
            if (connection == null)
            {
                hasErrors = true;
                return(false);
            }

            hasErrors     = false;
            isInitialized = true;
            return(true);
        }
예제 #32
0
        public async Task <QueryResponse <SessionTypeViewModel[]> > Handle(GetSessionsTypeQuery message)
        {
            using (var conn = _connectionProvider.CreateConnection())
            {
                string sqlWhere = string.Empty;
                if (message.IsPublished != null)
                {
                    sqlWhere = string.Format(" {0} {1} {2}", sqlWhere, (sqlWhere.Length == 0 ? "WHERE" : "AND"), "Sessions.IsPublished = @IsPublished");
                }
                if (message.ReferenceDate != null)
                {
                    sqlWhere = string.Format(" {0} {1} {2}", sqlWhere, (sqlWhere.Length == 0 ? "WHERE" : "AND"), "Sessions.[Start] >= @ReferenceDate");
                }

                string sql = string.Format(@"
SELECT Screens.CinemaId
    ,CASE 
		WHEN CAST(Sessions.Start AS time) < '14:00' THEN 'M'
		WHEN CAST(Sessions.Start AS time) BETWEEN '14:00' AND '19:30' THEN 'T'
		WHEN CAST(Sessions.Start AS time) > '19:30' THEN 'N'
	END AS SessionType

  FROM session.Sessions
  INNER JOIN cine.Screens ON Sessions.ScreenId = Screens.Id
  {0} 
  GROUP BY Screens.CinemaId
   ,CASE 
		WHEN CAST(Sessions.Start AS time) < '14:00' THEN 'M'
		WHEN CAST(Sessions.Start AS time) BETWEEN '14:00' AND '19:30' THEN 'T'
		WHEN CAST(Sessions.Start AS time) > '19:30' THEN 'N'
	END "    , sqlWhere);

                var sessiones = await conn.QueryAsync <SessionTypeViewModel>(sql, new
                {
                    IsPublished   = message.IsPublished,
                    ReferenceDate = message.ReferenceDate
                });

                return(new QueryResponse <SessionTypeViewModel[]>
                {
                    Data = sessiones.ToArray()
                });
            }
        }
예제 #33
0
        public async Task <QueryResponse <SessionFilmsViewModel[]> > Handle(GetSessionsFilmsQuery message)
        {
            using (var conn = _connectionProvider.CreateConnection())
            {
                string sqlWhere = string.Empty;
                if (message.IsPublished != null)
                {
                    sqlWhere = string.Format(" {0} {1} {2}", sqlWhere, (sqlWhere.Length == 0 ? "WHERE" : "AND"), "Sessions.IsPublished = @IsPublished");
                }
                if (message.ReferenceDate != null)
                {
                    sqlWhere = string.Format(" {0} {1} {2}", sqlWhere, (sqlWhere.Length == 0 ? "WHERE" : "AND"), "Sessions.[Start] >= @ReferenceDate");
                }

                string sql = string.Format(@"
SELECT *
FROM cine.Films
WHERE cine.Films.Id IN
	(
		SELECT Sessions.FilmId
		  FROM session.Sessions
          {0} 
	)"    , sqlWhere);

                var films = await conn.QueryAsync <SessionFilmsViewModel>(sql, new
                {
                    IsPublished   = message.IsPublished,
                    ReferenceDate = message.ReferenceDate
                });

                return(new QueryResponse <SessionFilmsViewModel[]>
                {
                    Data = films.ToArray()
                });
            }
        }
예제 #34
0
 protected MicrOrmDataStrategy(IConnectionProvider connectionProvider)
 {
     ConnectionProvider = connectionProvider;
     Connection = connectionProvider.CreateConnection();
     Connection.Open();
 }