Ejemplo n.º 1
0
        public async Task TestJson()
        {
            var organisations = new OrganisationTable("orgs");
            var users         = new UserTable();

            var services = new ServiceCollection()
                           .AddRoscoeSqlServer("Server=localhost;Database=test;");

            using (var provider = services.BuildServiceProvider())
            {
                var db     = new RoscoeDb(provider);
                var schema = GraphQLSchema.Create(x => new RootQueryType(x, db));
                var result = await schema.ExecuteRequestAsync(@"query {
    Organisations {
        id: Id
        Name
        UserNames
        Users {
            Id
            Name
            Organisation {
                Name
            }
        }
    }
}", null);

                var json = JsonConvert.SerializeObject(result, Formatting.Indented);
            }
        }
Ejemplo n.º 2
0
        public async Task QueryTest()
        {
            var services = new ServiceCollection()
                           .AddRoscoeSqlServer("Server=localhost;Database=test;");

            using (var provider = services.BuildServiceProvider())
            {
                var db = new RoscoeDb(provider);

                var organisations = new OrganisationTable("o");

                var query = db.Query(() => new
                {
                    Id        = organisations.Id.Value(),
                    Name      = Elvis(organisations.Name.Value(), x => x.ToUpper()),
                    NameIsFoo = db.Functions
                                .Case()
                                .When(organisations.Name == new Foo().Value(), 1.DbValue())
                                .Else(0)
                                .EndCase().Value(),
                })
                            .From(organisations)
                            .ForJsonPath();

                var result = await db.ExecuteAsync(query);
            }
        }
Ejemplo n.º 3
0
 public UserType(IAsyncBatch batch, RoscoeDb db, UserTable users, JsonQueryBuilder queryBuilder)
 {
     this.batch        = batch;
     this.db           = db;
     this.users        = users;
     this.queryBuilder = queryBuilder;
 }
Ejemplo n.º 4
0
        public async Task QueryTest()
        {
            var services = new ServiceCollection()
                           .AddRoscoePostgres("Host=localhost;Database=test");

            using (var provider = services.BuildServiceProvider())
            {
                var db = new RoscoeDb(provider);

                var organisations = new OrganisationTable("o");
                var subquery      = db.Query(Guid.Parse("c0cac2b4-4821-4135-900b-4a36b46f0122").DbValue()).Value;
                var subquery2     = db.Query(() => Guid.Parse("c0cac2b4-4821-4135-900b-4a36b46f0122").DbValue().Value()).Value;

                var from = db.Query(() => new { Id = Guid.Parse("c0cac2b4-4821-4135-900b-4a36b46f0122").DbValue().Value() }).Value;

                var query = db.Query(() => new
                {
                    Id   = organisations.Id.NullValue(),
                    Name = organisations.Name.ToLower().Value(),
                    //IdName = (organisations.Id + organisations.Name).Value(),
                })
                            .From(organisations)
                            //.InnerJoin(from, from.Value().Id == organisations.Id)
                            .Where(organisations.Id == subquery.DbValue());
                //.InnerJoin(organisations, organisations.Id == organisations.Id)
                //.Where(organisations.Name == "")
                //.GroupBy(organisations.Id);

                var sql    = query.ToString();
                var result = await db.ExecuteAsync(query);
            }
        }
        public static IWrapper <PostgresQueryCommand <T> > Query <T>(this RoscoeDb db, IDbFragment <T> expression)
        {
            Check.IsNotNull(db, nameof(db));

            return(db.ServiceProvider.GetRequiredService <IPostgresQueryCommandFactory>()
                   .Create(db.ServiceProvider, expression));
        }
        public static IWrapper <SqlServerQueryCommand <T> > Query <T>(this RoscoeDb db, Expression <Func <T> > expression)
        {
            Check.IsNotNull(db, nameof(db));

            return(db.ServiceProvider.GetRequiredService <ISqlServerQueryCommandFactory>()
                   .Create(db.ServiceProvider, expression));
        }
        public static IWrapper <SqlServerQueryCommand> Query(this RoscoeDb db)
        {
            Check.IsNotNull(db, nameof(db));

            return(db.ServiceProvider.GetRequiredService <ISqlServerQueryCommandFactory>()
                   .Create(db.ServiceProvider));
        }
Ejemplo n.º 8
0
        public async Task UpdateTest()
        {
            var services = new ServiceCollection()
                           .AddRoscoePostgres("Host=localhost;Database=test");

            using (var provider = services.BuildServiceProvider())
            {
                var db = new RoscoeDb(provider);

                var organisations = new OrganisationTable("o");

                var subquery = db.Query(() => Guid.Parse("c0cac2b4-4821-4135-900b-4a36b46f0122").DbValue().Value()).Value;

                var query = db.Update(organisations)
                            .Set(organisations.Name, "new name".DbValue())
                            //.From(organisations)
                            //.InnerJoin(organisations, organisations.Id == organisations.Id)
                            .Where(organisations.Id == subquery.DbValue())
                            .Returning(() => new
                {
                    Id   = organisations.Id.Value(),
                    Name = organisations.Name.Value(),
                });

                var sql    = query.ToString();
                var result = await db.ExecuteAsync(query);
            }
        }
        public PostgresJsonQueryBuilderAdapter(RoscoeDb db, JsonBuildObjectFragment buildObject)
        {
            Check.IsNotNull(db, nameof(db));
            Check.IsNotNull(buildObject, nameof(buildObject));

            this.db          = db;
            this.buildObject = buildObject;
        }
        public SqlServerJsonQueryBuilderAdapter(RoscoeDb db, IWrapper <IWrapper <SelectClause> > command)
        {
            Check.IsNotNull(db, nameof(db));
            Check.IsNotNull(command, nameof(command));

            this.db      = db;
            this.command = command;
        }
Ejemplo n.º 11
0
        public RootQueryType(IAsyncBatch batch, RoscoeDb db)
        {
            this.batch = batch;
            this.db    = db;

            provider     = batch.Add(new RoscoeAsyncOperation <RoscoeDb>(db));
            enumProvider = batch.Add(new ObjectDataProvider <OrgType>(token => Task.FromResult(OrgType.Sme)));
        }
        public static IWrapper <PostgresUpdateCommand> Update(this RoscoeDb db, Table table)
        {
            Check.IsNotNull(db, nameof(db));
            Check.IsNotNull(table, nameof(table));

            return(db.ServiceProvider.GetRequiredService <IPostgresUpdateCommandFactory>()
                   .Create(db.ServiceProvider, table));
        }
        public static IWrapper <PostgresInsertValuesCommand <T> > InsertValues <T>(this RoscoeDb db, Table table, T expression)
        {
            Check.IsNotNull(db, nameof(db));
            Check.IsNotNull(table, nameof(table));
            Check.IsNotNull(expression, nameof(expression));

            return(db.ServiceProvider.GetRequiredService <IPostgresInsertValuesCommandFactory>()
                   .Create(db.ServiceProvider, table, expression));
        }
Ejemplo n.º 14
0
 public OrganisationType(
     IAsyncBatch batch,
     RoscoeDb db,
     OrganisationTable organisations,
     JsonQueryBuilder queryBuilder)
 {
     this.batch         = batch;
     this.db            = db;
     this.organisations = organisations;
     this.queryBuilder  = queryBuilder;
 }
Ejemplo n.º 15
0
        public async Task TestStrongTypeQuery()
        {
            var services = new ServiceCollection()
                           .AddRoscoeSqlServer("Server=localhost;Database=test;");

            using (var provider = services.BuildServiceProvider())
            {
                var db     = new RoscoeDb(provider);
                var schema = GraphQLSchema.Create(x => new RootQueryType(x, db));

                var result = await schema.QueryAsync(x => new
                {
                    Organisations = x.Organisations()
                                    .Select(y => new
                    {
                        //Foo = y.Id().GetValue(null),
                        Id    = y.Id().Value() + "foo",
                        Name  = y.Name().Value(),
                        Type  = y.Type().Value(),
                        Users = y.Users()
                                .Select(z => new
                        {
                            Org = z.Organisation()
                                  .Select(a => new
                            {
                                Name = a.Name().Value(),
                            }),
                        }),
                    }),
                });

                /*
                 * schema.ExecuteQueryAsync((x, dr) => new
                 * {
                 *  Organisations = GraphQLSchemaOperations.Select(x.Organisations(), dr, (y, dr2) => new
                 *  {
                 *      Id = (string)y.Id.GetValue(dr2),
                 *      Name = (string)y.Name.GetValue(dr2),
                 *      Users = GraphQLSchemaOperations.Select(y.Users(), dr2, (z, dr3) => new
                 *      {
                 *          Org = GraphQLSchemaOperations.Select(z.Organisation(), dr3, (a, dr4) => new
                 *          {
                 *              Name = (string)a.Name().GetValue(dr4),
                 *          },
                 *      },
                 *  }),
                 * });
                 *
                 */

                var json = JsonConvert.SerializeObject(result, Formatting.Indented);
            }
        }
Ejemplo n.º 16
0
        public void InsertTest()
        {
            var services = new ServiceCollection()
                           .AddRoscoePostgres("");

            using (var provider = services.BuildServiceProvider())
            {
                var db = new RoscoeDb(provider);

                var organisations = new OrganisationTable("o");

                var selectQuery = db.Query(() => new
                {
                    Id   = organisations.Id.NullValue(),
                    Name = organisations.Name.ToLower().Value(),
                    //IdName = (organisations.Id + organisations.Name).Value(),
                })
                                  .From(organisations);

                var updateQuery = db.Update(organisations)
                                  .Set(organisations.Name, "new name".DbValue())
                                  //.From(organisations)
                                  //.InnerJoin(organisations, organisations.Id == organisations.Id)
                                  .Where(organisations.Name == "")
                ;

                var query = db.InsertValues(organisations, new { organisations.Id, organisations.Name })
                            .Values(new { Id = Guid.NewGuid().DbValue(), Name = "org 1".DbValue() })
                            .OnConflict(organisations.Id, organisations.Name)
                            //.DoNothing()
                            .Update(x => x.Set(organisations.Name, "org 1".DbValue()))
                            .Returning(() => new
                {
                    Id = organisations.Id.Value(),
                });

                var selectSql = selectQuery.ToString();
                var updateSql = updateQuery.ToString();
                var sql       = query.ToString();
            }
        }
Ejemplo n.º 17
0
        public void DeleteTest()
        {
            var services = new ServiceCollection()
                           .AddRoscoePostgres("");

            using (var provider = services.BuildServiceProvider())
            {
                var db = new RoscoeDb(provider);

                var organisations = new OrganisationTable("o");

                var query = db.Delete(organisations)
                            .From(organisations)
                            .InnerJoin(organisations, organisations.Id == organisations.Id)
                            .Where(organisations.Name == "")
                            .Returning(() => new
                {
                    organisations.Id,
                });

                var sql = query.ToString();
            }
        }
        public static DerivedTable <T> FromValues <T>(this RoscoeDb db, params Expression <Func <T> >[] values)
        {
            Check.IsNotNull(db, nameof(db));

            return(new DerivedTable <T>("__derived", values));
        }
        public static IWrapper <SqlServerInsertCommand <TColumns> > Insert <TColumns>(this RoscoeDb db, Table table, TColumns expression, SqlServerQueryCommand <TColumns> values)
        {
            Check.IsNotNull(db, nameof(db));
            Check.IsNotNull(table, nameof(table));
            Check.IsNotNull(expression, nameof(expression));

            return(db.ServiceProvider.GetRequiredService <ISqlServerInsertCommandFactory>()
                   .Create(db.ServiceProvider, table, expression, values));
        }
        public static IWrapper <PostgresQueryCommand> Query(this RoscoeDb db)
        {
            Check.IsNotNull(db, nameof(db));

            return(db.ServiceProvider.GetRequiredService <PostgresQueryCommand>());
        }