当前位置: 首页>>代码示例>>Golang>>正文


Golang rebecca.Context类代码示例

本文整理汇总了Golang中github.com/waterlink/rebecca.Context的典型用法代码示例。如果您正苦于以下问题:Golang Context类的具体用法?Golang Context怎么用?Golang Context使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Context类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: ExampleContext_All

func ExampleContext_All() {
	type Person struct {
		// ...
	}

	ctx := rebecca.Context{Limit: 20, Skip: 40}
	people := []Person{}
	if err := ctx.All(&people); err != nil {
		panic(err)
	}
	// At this point people contains 20 Person records starting from 41th from
	// the database.
	fmt.Print(people)
}
开发者ID:23inhouse,项目名称:rebecca,代码行数:14,代码来源:context_test.go

示例2: ExampleContext_Where

func ExampleContext_Where() {
	type Person struct {
		// ...
	}

	ctx := rebecca.Context{Order: "age DESC"}
	teenagers := []Person{}
	if err := ctx.Where(&teenagers, "age < $1", 21); err != nil {
		panic(err)
	}
	// At this point teenagers will contain a list of Person records sorted by
	// age in descending order and where age < 21.
	fmt.Print(teenagers)
}
开发者ID:23inhouse,项目名称:rebecca,代码行数:14,代码来源:context_test.go

示例3: ExampleContext_First

func ExampleContext_First() {
	type Person struct {
		// ...
	}

	ctx := rebecca.Context{Order: "age DESC"}
	oldestTeenager := &Person{}
	if err := ctx.First(oldestTeenager, "age < $1", 21); err != nil {
		panic(err)
	}
	// At this point oldestTeenager will contain a Person record that is of
	// maximum age and that is of age < 21.
	fmt.Print(oldestTeenager)
}
开发者ID:23inhouse,项目名称:rebecca,代码行数:14,代码来源:context_test.go

示例4: TestGroup

func TestGroup(t *testing.T) {
	setup(t)

	p1 := &Person{Name: "John", Age: 9}
	p2 := &Person{Name: "Sarah", Age: 27}
	p3 := &Person{Name: "Bruce", Age: 27}
	p4 := &Person{Name: "James", Age: 11}
	p5 := &Person{Name: "Monika", Age: 11}
	p6 := &Person{Name: "Peter", Age: 21}
	p7 := &Person{Name: "Brad", Age: 11}
	people := []*Person{p1, p2, p3, p4, p5, p6, p7}

	for _, p := range people {
		if err := rebecca.Save(p); err != nil {
			t.Fatal(err)
		}
	}

	type PersonByAge struct {
		rebecca.ModelMetadata `tablename:"people"`

		Age   int `rebecca:"age" rebecca_primary:"true"`
		Count int `rebecca:"count(distinct(id))"`
	}

	ctx := rebecca.Context{Group: "age"}
	expected := []PersonByAge{
		{Age: 9, Count: 1},
		{Age: 11, Count: 3},
		{Age: 21, Count: 1},
		{Age: 27, Count: 2},
	}
	actual := []PersonByAge{}
	if err := ctx.All(&actual); err != nil {
		t.Fatal(err)
	}

	if !reflect.DeepEqual(actual, expected) {
		t.Errorf("Expected %+v to equal %+v", actual, expected)
	}
}
开发者ID:23inhouse,项目名称:rebecca,代码行数:41,代码来源:pgdriver_test.go

示例5: ExampleModelMetadata

func ExampleModelMetadata() {
	type Person struct {
		// ModelMetadata allows to provide table name for the model
		rebecca.ModelMetadata `tablename:"people"`

		ID   int    `rebecca:"id" rebecca_primary:"true"`
		Name string `rebecca:"name"`
		Age  int    `rebecca:"age"`
	}

	type PostsOfPerson struct {
		// Additionally you can have any expression as a table name, that your
		// driver will allow, for example, simple join:
		rebecca.ModelMetadata `tablename:"people JOIN posts ON posts.author_id = people.id"`

		// .. fields are defined here ..
	}

	type PersonCountByAge struct {
		rebecca.ModelMetadata `tablename:"people"`

		// Additionally you can use any expressions as a database mapping for
		// fields, that your driver will allow, for example,
		// count(distinct(field_name)):
		Count int `rebecca:"count(distinct(id))"`
		Age   int `rebecca:"age"`
	}

	// PersonCountByAge is useful, because it can be nicely used with
	// aggregation:
	byAge := []PersonCountByAge{}
	ctx := rebecca.Context{Group: "age"}
	if err := ctx.All(&byAge); err != nil {
		panic(err)
	}

	// At this point byAge contains counts of people per each distinct age.
	// Ordering depends on your chosen driver and database.
	fmt.Print(byAge)
}
开发者ID:23inhouse,项目名称:rebecca,代码行数:40,代码来源:metadata_test.go


注:本文中的github.com/waterlink/rebecca.Context类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。