1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bianweiall-red

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RED

RED — это ORM для языка Go, вдохновленный beedb. Основная цель проекта — обучение работе с Go. Поддерживает только базу данных PostgreSQL и предоставляет методы для выполнения операций создания, обновления, удаления и выборки.

Можно настраивать SQL-запросы, используя следующие ключевые слова: SELECT / WHERE / AND / ORDER BY / LIMIT / OFFSET / RETURNING.

Установка:

go get github.com/bianweiall/red
```Использование:
Названия таблиц и полей должны начинаться с `_` и заканчиваться строчными английскими буквами.
Пример определения структуры, соответствующей структуре таблицы базы данных (например: User => _user, Id => _id, Name => _name, Time => _time, Age => _age):
```go
type User struct {
    Id   int `pk:auto` // `pk:auto` указывает на автоматическую последовательность, `pk` — обычный первичный ключ
    Name string
    Time string `dt`   // `dt` указывает на тип данных "current_timestamp" в PostgreSQL
    Age  int
}

Получение ORM:

err, orm := red.New()
func main() {
    var user User
    err, orm := red.New()
    if err != nil {
        panic(err)
    }
    err = orm.Where("_id=?", 1).Find(&user)
    if err != nil {
        panic(err)
    }
}

Сохранение записи, при этом значения автоинкрементного поля Id и поля Time будут заполнены автоматически. Если указано поле Returning, то будет возвращено значение ошибки и словарь значений; если нет, то вернется значение ошибки и nil.

var user User
user.Name = "小明"
user.Age = 12
err, r := orm.Create(&user)

Сохранение записи и получение ID и имени только что созданной записи.

var user User
user.Name = "小明"
user.Age = 12
err, strs := orm.Returning("_id", "_name").Create(&user)

Обновление всех полей записи (кроме автоинкрементного поля Id).

var user User
user.Name = "鸭蛋"
user.Age = 50
err := orm.Where("_id=?", 1).Update(&user)

Обновление конкретных полей записи.

var user User
user.Name = "鸭蛋"
user.Age = 50
err := orm.Set("_time", "_name", "_age").Where("_id=?", 1).Update(&user)

Удаление записи пользователя.

var user User
err := orm.Where("_id=?", 1).Delete(&user)
```Выбор одной записи пользователя, где поля выбираются по умолчанию, если не указаны явно.
```go
var user User
err := orm.Select("_name", "_age").Where("_id=?", 1).Find(&user)

Выбор множества записей пользователей, где поля выбираются по умолчанию, если не указаны явно.

var users []User
err := orm.Where("_id>?", 1).And("_name like ?", "%ключевое слово%").Find(&users)

Формат названий полей в передаваемых параметрах: "" + строчные английские буквы. Если не указано, используется "" + имя объекта в нижнем регистре, например: "_user".

func (orm *Orm) SetTableName(tableName string) *Orm

Установите имя таблицы ("_book").

SetTableName("_book")

Задайте выбранные поля; если не задано — выбираются все поля по умолчанию.

func (orm *Orm) Select(strs ...string) *Orm

Пример использования:

orm := orm.Select("_id", "_name")

Обновление данных с помощью UPDATE предложения, где SET следует за выражением; если не указано — обновляются все поля кроме автоинкрементного первичного ключа.

func (orm *Orm) Set(strs ...string) *Orm

Пример использования:

orm := orm.Set("_age", "_name")

Выражение после WHERE условия.

func (orm *Orm) Where(str string, strValue ...interface{}) *Orm

Пример использования:

orm := orm.Where("_id >? and _name like ?", 1, "%ключевое слово%")

Ограничение количества записей с помощью LIMIT и OFFSET, параметры должны быть положительными целыми числами.

func (orm *Orm) Limit(limit int) *Orm
func (orm *Orm) Offset(offset int) *Orm

Пример использования:

err = orm.Where("_id >?", 1).Limit(10).Offset(5)

Сортировка записей с помощью ORDER BY.

func (orm *Orm) OrderBy(orderByStrs ...

. string) *Orm

Пример использования:
```go
err := orm.Where("_id > ?", 1).OrderBy("_id desc", "_age asc").Find(&users)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ORM на языке Go поддерживает только базу данных PostgreSQL. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bianweiall-red.git
git@api.gitlife.ru:oschina-mirror/bianweiall-red.git
oschina-mirror
bianweiall-red
bianweiall-red
master