From ee0978a108cdd0b6e9bf2f90b647026e1b71814c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 28 Oct 2023 11:58:27 +0800 Subject: [PATCH] add new package executors --- executors/querier.go | 33 +++++++++++++++++++++++++++++++++ executors/querier_test.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 executors/querier.go create mode 100644 executors/querier_test.go diff --git a/executors/querier.go b/executors/querier.go new file mode 100644 index 00000000..817d6a67 --- /dev/null +++ b/executors/querier.go @@ -0,0 +1,33 @@ +// Copyright 2023 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package executors + +import ( + "context" + + "xorm.io/xorm/v2" +) + +type Querier[T any] struct { + client xorm.Interface +} + +func NewQuerier[T any](c xorm.Interface) *Querier[T] { + return &Querier[T]{ + client: c, + } +} + +func (q *Querier[T]) All(ctx context.Context) ([]T, error) { + var result []T + return result, q.client.Find(&result) +} + +type Filter interface{} + +func (q *Querier[T]) Filter(ctx context.Context, filter ...Filter) ([]T, error) { + // implementation + return nil, nil +} diff --git a/executors/querier_test.go b/executors/querier_test.go new file mode 100644 index 00000000..2fa11e8b --- /dev/null +++ b/executors/querier_test.go @@ -0,0 +1,35 @@ +// Copyright 2023 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package executors + +import ( + "context" + "testing" + + "xorm.io/xorm/v2" + + _ "github.com/mattn/go-sqlite3" + "github.com/stretchr/testify/assert" +) + +func TestQuerier(t *testing.T) { + type User struct { + Id int64 + Name string + } + + engine, err := xorm.NewEngine("sqlite3", "file::memory:?cache=shared") + assert.NoError(t, err) + assert.NoError(t, engine.Sync(new(User))) + + // create querier + querier := NewQuerier[User](engine) + + users, err := querier.All(context.Background()) + if err != nil { + t.Fatal(err) + } + assert.Equal(t, len(users), 0) +}