Documentation ¶
Overview ¶
Package postgres implements the postgres storage. It's powered by `sqlx`, and gocu.
`sqlx` is a library which provides a set of extensions on go's standard database/sql library. The sqlx versions of sql.DB, sql.TX, sql.Stmt, et al. all leave the underlying interfaces untouched, so that their interfaces are a superset on the standard ones. This makes it relatively painless to integrate existing codebases using database/sql with sqlx.
gocu is a query builder.
Index ¶
- Constants
- func Get() storage.IStorage
- func Set(s storage.IStorage)
- func ToSQLString(s customsort.Sort) (string, error)
- type Config
- type Postgres
- func (p *Postgres) Count(ctx context.Context, target string, prm *count.Count, ...) (int64, error)
- func (p *Postgres) Create(ctx context.Context, id, target string, v any, prm *create.Create, ...) (string, error)
- func (p *Postgres) Delete(ctx context.Context, id, target string, prm *delete.Delete, ...) error
- func (p *Postgres) GetClient() any
- func (p *Postgres) List(ctx context.Context, target string, v any, prm *list.List, ...) error
- func (p *Postgres) Retrieve(ctx context.Context, id, target string, v any, prm *retrieve.Retrieve, ...) error
- func (p *Postgres) Update(ctx context.Context, id, target string, v any, prm *update.Update, ...) error
Constants ¶
const Name = "postgres"
Name of the storage.
Variables ¶
This section is empty.
Functions ¶
func ToSQLString ¶
func ToSQLString(s customsort.Sort) (string, error)
ToSQLString converts the `s` to a format that can be used in a SQL query.
NOTE: Keywords in SQL are case-insensitive for the most popular DBMSs. The computer doesn't care whether you write SELECT, select, sELeCt, ASC, AsC, or asc.
Types ¶
type Config ¶
type Config struct { DataSourceName string `json:"dataSourceName" validate:"required"` DriverName string `json:"driverName" validate:"required"` }
Config is the postgres configuration.
type Postgres ¶
type Postgres struct { *storage.Storage // Client is the postgres client. Client *sqlx.DB `json:"-" validate:"required"` // Config is the postgres configuration. Config *Config `json:"-"` // Target allows to set a static target. If it is empty, the target will be // dynamic - the one set at the operation (count, create, delete, etc) time. // Depending on the storage, target is a collection, a table, a bucket, etc. // For ElasticSearch, for example it doesn't have a concept of a database - // the target then is the index. Due to different cases of ElasticSearch // usage, the target can be static or dynamic - defined at the index time, // for example: log-{YYYY}-{MM}. For Redis, it isn't used at all. Target string `json:"-" validate:"omitempty,gt=0"` }
Postgres storage definition.
func (*Postgres) Count ¶
func (p *Postgres) Count(ctx context.Context, target string, prm *count.Count, options ...storage.Func[*count.Count]) (int64, error)
Count returns the number of items in the storage.
func (*Postgres) Create ¶ added in v0.0.15
func (p *Postgres) Create(ctx context.Context, id, target string, v any, prm *create.Create, options ...storage.Func[*create.Create]) (string, error)
Create data.
NOTE: Not all storages returns the ID, neither all storages requires `id` to be set. You are better off setting the ID yourself.
func (*Postgres) Delete ¶
func (p *Postgres) Delete(ctx context.Context, id, target string, prm *delete.Delete, options ...storage.Func[*delete.Delete]) error
Delete removes data.
func (*Postgres) List ¶
func (p *Postgres) List(ctx context.Context, target string, v any, prm *list.List, options ...storage.Func[*list.List]) error
List data.
NOTE: It uses param.List.Search to query the data.