kvorm

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2023 License: MIT Imports: 10 Imported by: 0

README

kvorm

kvorm is an ORM focused on working with Postresql

Installation

go get github.com/KVOrange/kvorm@0.0.2

Quick Start

package main

import (
	"github.com/KVOrange/kvorm"
	"github.com/jackc/pgx/v5/pgtype"
)

type JobTitle struct {
    kvorm.Model `table:"job_title"`
    
    Id      pgtype.Int8 `json:"id" type:"pk"`
    Name    pgtype.Text `json:"name"`
    NameAdd pgtype.Text `json:"name_add"`
}

type Person struct {
    kvorm.Model `table:"person"`
    
    Id   pgtype.Int8 `json:"id" type:"pk"`
    Code pgtype.Text `json:"code"`
    Fio  pgtype.Text `json:"fio"`
    
    JobTitle JobTitle `db:"job_title" fk:"job_title_id,id"`
}

func main() {
    dbClient := kvorm.DbClient{}
    err = dbClient.Connect(ctx, kvorm.DbConfig{
        Host:      "localhost",
        Port:      5432,
        User:      "user",
        Password:  "password",
        Name:      "db_name",
        PollCount: 10,
    })

    var personTable Person
    err = personTable.Init(&dbClient, &personTable)
    if err != nil {
        panic(err)
    }

    var person Person
    err = personTable.Select().Where(kvorm.And{
        Field: personTable.Field("id"),
        Op:    kvorm.Eq,
        Value: 1,
    }).ScanOne(&person)
    if err != nil {
    panic(err)
    }
    
    fmt.Println(person)
}

Documentation

Index

Constants

View Source
const (
	In        = "in"
	NotIn     = "notIn"
	Eq        = "eq"
	NotEq     = "notEq"
	Like      = "like"
	NotLike   = "notLike"
	Regex     = "regex"
	RegexI    = "regexI"
	NotRegex  = "notRegex"
	NotRegexI = "notRegexI"
	Lt        = "lt"
	Lte       = "lte"
	Gt        = "gt"
	Gte       = "gte"
	IsNotNull = "isNotNull"
	IsNull    = "isNull"
)
View Source
const SEPARATOR = "__"

Variables

This section is empty.

Functions

This section is empty.

Types

type AddExpression added in v0.0.2

type AddExpression struct {
	Field1 ModelField
	Field2 ModelField
}

func (AddExpression) Fields added in v0.0.2

func (e AddExpression) Fields() (ModelField, ModelField)

func (AddExpression) Sql added in v0.0.2

func (AddExpression) ToCondition added in v0.0.2

func (e AddExpression) ToCondition() (Identifiable, []ModelField)

type And

type And struct {
	Field Conditional
	Op    string
	Value interface{}
}

func (And) Condition

func (a And) Condition() (exp.Expression, []ModelField)

type CalculationExpression added in v0.0.2

type CalculationExpression interface {
	Sql() exp.LiteralExpression
	Fields() (ModelField, ModelField)
}

type Condition added in v0.0.2

type Condition interface {
	Condition() (exp.Expression, []ModelField)
}

type ConditionGroup

type ConditionGroup []Condition

func (ConditionGroup) Condition

func (c ConditionGroup) Condition() (exp.Expression, []ModelField)

type Conditional added in v0.0.2

type Conditional interface {
	ToCondition() (Identifiable, []ModelField)
}

type CountExpression

type CountExpression struct {
	Field ModelField
}

type DbClient

type DbClient struct {
	Ctx  context.Context
	Pool *pgxpool.Pool
}

func (*DbClient) Connect

func (cli *DbClient) Connect(ctx context.Context, cfg DbConfig) error

type DbConfig

type DbConfig struct {
	Host      string
	Port      int
	User      string
	Password  string
	Name      string
	PollCount int32
}

type DeleteDataset

type DeleteDataset struct {
	// contains filtered or unexported fields
}

func (*DeleteDataset) Exec

func (d *DeleteDataset) Exec() error

func (*DeleteDataset) Returning added in v0.0.2

func (d *DeleteDataset) Returning(returning ...interface{}) *DeleteDataset

func (*DeleteDataset) Scan added in v0.0.2

func (d *DeleteDataset) Scan(dst interface{}) error

func (*DeleteDataset) ScanOne added in v0.0.2

func (d *DeleteDataset) ScanOne(dst interface{}) error

func (*DeleteDataset) String

func (d *DeleteDataset) String() string

func (*DeleteDataset) Where

func (d *DeleteDataset) Where(conditions ...Condition) *DeleteDataset

func (*DeleteDataset) WithTx added in v0.0.2

func (d *DeleteDataset) WithTx(tx pgx.Tx) *DeleteDataset

type DivisionExpression added in v0.0.2

type DivisionExpression struct {
	Field1 ModelField
	Field2 ModelField
}

func (DivisionExpression) Fields added in v0.0.2

func (DivisionExpression) Sql added in v0.0.2

func (DivisionExpression) ToCondition added in v0.0.2

func (e DivisionExpression) ToCondition() (Identifiable, []ModelField)

type Identifiable

type Identifiable interface {
	exp.Inable
	exp.Comparable
	exp.Likeable
	exp.Isable
}

type InsertDataset added in v0.0.2

type InsertDataset struct {
	// contains filtered or unexported fields
}

func (*InsertDataset) Returning added in v0.0.2

func (d *InsertDataset) Returning(returning ...interface{}) *InsertDataset

func (*InsertDataset) Scan added in v0.0.2

func (d *InsertDataset) Scan(dst interface{}) error

func (*InsertDataset) ScanOne added in v0.0.2

func (d *InsertDataset) ScanOne(dst interface{}) error

func (*InsertDataset) String added in v0.0.2

func (d *InsertDataset) String() string

type LiteralExpression added in v0.0.2

type LiteralExpression struct {
	Fields []ModelField
	Format string
}

func L

func L(sql string, fields ...ModelField) LiteralExpression

func (LiteralExpression) Sql added in v0.0.2

func (LiteralExpression) ToCondition added in v0.0.2

func (e LiteralExpression) ToCondition() (Identifiable, []ModelField)

type Model

type Model struct {
	// contains filtered or unexported fields
}

func (*Model) Delete

func (m *Model) Delete() *DeleteDataset

func (*Model) Field added in v0.0.2

func (m *Model) Field(name string) ModelField

func (*Model) Init added in v0.0.2

func (m *Model) Init(db *DbClient, model interface{}) error

func (*Model) Insert

func (m *Model) Insert(rows ...interface{}) *InsertDataset

func (*Model) Select

func (m *Model) Select(fields ...interface{}) *SelectDataset

func (*Model) Self added in v0.0.2

func (m *Model) Self() SelfFields

func (*Model) Update

func (m *Model) Update(values interface{}) *UpdateDataset

type ModelField added in v0.0.2

type ModelField struct {
	Model *Model
	Field exp.AliasedExpression
}

func (ModelField) Add added in v0.0.2

func (e ModelField) Add(field ModelField) AddExpression

func (ModelField) Count added in v0.0.2

func (e ModelField) Count() CountExpression

func (ModelField) Div added in v0.0.2

func (ModelField) Mul added in v0.0.2

func (ModelField) Sub added in v0.0.2

func (e ModelField) Sub(field ModelField) SubExpression

func (ModelField) ToCondition added in v0.0.2

func (e ModelField) ToCondition() (Identifiable, []ModelField)

type MultiplicationExpression added in v0.0.2

type MultiplicationExpression struct {
	Field1 ModelField
	Field2 ModelField
}

func (MultiplicationExpression) Fields added in v0.0.2

func (MultiplicationExpression) Sql added in v0.0.2

func (MultiplicationExpression) ToCondition added in v0.0.2

func (e MultiplicationExpression) ToCondition() (Identifiable, []ModelField)

type OrCondition

type OrCondition struct {
	Conditions []Condition
}

func Or

func Or(conditions ...Condition) OrCondition

func (OrCondition) Condition

func (c OrCondition) Condition() (exp.Expression, []ModelField)

type SelectDataset

type SelectDataset struct {
	// contains filtered or unexported fields
}

func (*SelectDataset) Limit

func (sd *SelectDataset) Limit(limit uint) *SelectDataset

func (*SelectDataset) MapScan

func (sd *SelectDataset) MapScan() ([]map[string]interface{}, error)

func (*SelectDataset) Offset

func (sd *SelectDataset) Offset(offset uint) *SelectDataset

func (*SelectDataset) OrderAsc added in v0.0.2

func (sd *SelectDataset) OrderAsc(fields ...ModelField) *SelectDataset

func (*SelectDataset) OrderDesc added in v0.0.2

func (sd *SelectDataset) OrderDesc(fields ...ModelField) *SelectDataset

func (*SelectDataset) Query

func (sd *SelectDataset) Query() *goqu.SelectDataset

func (*SelectDataset) Scan

func (sd *SelectDataset) Scan(dst interface{}) error

func (*SelectDataset) ScanOne

func (sd *SelectDataset) ScanOne(dst interface{}) error

func (*SelectDataset) String

func (sd *SelectDataset) String() string

func (*SelectDataset) Where

func (sd *SelectDataset) Where(conditions ...Condition) *SelectDataset

type SelfFields added in v0.0.2

type SelfFields struct {
	Model *Model
}

type SqlError

type SqlError struct {
	Err        error
	QueryValue string
}

func (*SqlError) Error

func (e *SqlError) Error() string

func (*SqlError) Query

func (e *SqlError) Query() string

type SubExpression

type SubExpression struct {
	Field1 ModelField
	Field2 ModelField
}

func (SubExpression) Fields added in v0.0.2

func (e SubExpression) Fields() (ModelField, ModelField)

func (SubExpression) Sql added in v0.0.2

func (SubExpression) ToCondition added in v0.0.2

func (e SubExpression) ToCondition() (Identifiable, []ModelField)

type UpdateDataset

type UpdateDataset struct {
	// contains filtered or unexported fields
}

func (*UpdateDataset) Exec

func (d *UpdateDataset) Exec() error

func (*UpdateDataset) Returning added in v0.0.2

func (d *UpdateDataset) Returning(returning ...interface{}) *UpdateDataset

func (*UpdateDataset) Scan added in v0.0.2

func (d *UpdateDataset) Scan(dst interface{}) error

func (*UpdateDataset) ScanOne added in v0.0.2

func (d *UpdateDataset) ScanOne(dst interface{}) error

func (*UpdateDataset) String

func (d *UpdateDataset) String() string

func (*UpdateDataset) Where

func (d *UpdateDataset) Where(conditions ...Condition) *UpdateDataset

func (*UpdateDataset) WithTx added in v0.0.2

func (d *UpdateDataset) WithTx(tx pgx.Tx) *UpdateDataset

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL