Documentation
¶
Index ¶
- type Analyses
- type AnalysesReader
- type AnalysesWriter
- type Analysis
- type AnalysisState
- type CopyUsersParams
- type CreateUserParams
- type DBTX
- type GetAnalysisParams
- type GetTenantUserAnalysisParams
- type GetTenantUserAnalysisRow
- type GetTenantUserAnalysisShardParams
- type GetUserParams
- type ListP2PMessageIDsByChatParams
- type ListP2PMessageIDsByChatShardParams
- type ListP2PMessagesByChatParams
- type ListP2PMessagesByChatShardParams
- type Message
- type MessageInbox
- type NullAnalysisState
- type Querier
- type Queries
- func (q *Queries) CopyUsers(ctx context.Context, arg []*CopyUsersParams) (int64, error)
- func (q *Queries) CreateUser(ctx context.Context, arg *CreateUserParams) (*User, error)
- func (q *Queries) DeleteAllUsers(ctx context.Context) error
- func (q *Queries) DeleteAllUsersByName(ctx context.Context, name string) (int64, error)
- func (q *Queries) GetAnalysis(ctx context.Context, arg *GetAnalysisParams) (*Analysis, error)
- func (q *Queries) GetTenantUserAnalysis(ctx context.Context, arg *GetTenantUserAnalysisParams) (*GetTenantUserAnalysisRow, error)
- func (q *Queries) GetUser(ctx context.Context, arg *GetUserParams) (*User, error)
- func (q *Queries) ListAllUsers(ctx context.Context) ([]*User, error)
- func (q *Queries) ListP2PMessageIDsByChat(ctx context.Context, arg *ListP2PMessageIDsByChatParams) ([]interface{}, error)
- func (q *Queries) ListP2PMessagesByChat(ctx context.Context, arg *ListP2PMessagesByChatParams) ([]*Message, error)
- func (q *Queries) UpdateUserName(ctx context.Context, arg *UpdateUserNameParams) (*User, error)
- func (q *Queries) WithTx(tx pgx.Tx) *Queries
- type QueryMessage
- type QueryMessageReader
- type QueryMessageWriter
- type QueryOption
- type ShardResolver
- type ShardedOption
- type SingletonOption
- type Store
- type StoreOption
- type Topology
- type UpdateUserNameParams
- type User
- type Users
- type UsersReader
- type UsersWriter
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Analyses ¶
type Analyses interface {
AnalysesReader
AnalysesWriter
}
Analyses exposes all queries in its generated store group.
type AnalysesReader ¶
type AnalysesReader interface {
// GetAnalysis executes the generated GetAnalysis query.
GetAnalysis(ctx context.Context, arg *GetAnalysisParams, storeOptions ...QueryOption) (*Analysis, error)
// GetTenantUserAnalysis executes the generated GetTenantUserAnalysis query.
GetTenantUserAnalysis(ctx context.Context, arg *GetTenantUserAnalysisShardParams, storeOptions ...QueryOption) (*GetTenantUserAnalysisRow, error)
}
AnalysesReader exposes read queries in the Analyses store group.
type AnalysesWriter ¶
type AnalysesWriter interface {
}
AnalysesWriter exposes write queries in the Analyses store group.
type Analysis ¶
type Analysis struct {
ID int64
TenantID int64
Description *string
State NullAnalysisState
Source netip.Addr
ActiveWindow pgtype.Range[pgtype.Timestamptz]
}
type AnalysisState ¶
type AnalysisState string
const ( AnalysisStatePending AnalysisState = "pending" AnalysisStateComplete AnalysisState = "complete" )
func (*AnalysisState) Scan ¶
func (e *AnalysisState) Scan(src interface{}) error
type CopyUsersParams ¶
type CreateUserParams ¶
type DBTX ¶
type DBTX interface {
Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
Query(context.Context, string, ...interface{}) (pgx.Rows, error)
QueryRow(context.Context, string, ...interface{}) pgx.Row
CopyFrom(ctx context.Context, tableName pgx.Identifier, columnNames []string, rowSrc pgx.CopyFromSource) (int64, error)
}
type GetAnalysisParams ¶
type GetTenantUserAnalysisShardParams ¶
GetTenantUserAnalysisShardParams combines sqlc and routing-only shard parameters for GetTenantUserAnalysis.
type GetUserParams ¶
type ListP2PMessageIDsByChatParams ¶
type ListP2PMessageIDsByChatParams struct {
Limit int32
UserID int64
PeerID int64
CreatedSince pgtype.Timestamptz
LastID interface{}
}
type ListP2PMessageIDsByChatShardParams ¶
type ListP2PMessageIDsByChatShardParams struct {
Limit int32
UserID int64
PeerID int64
CreatedSince pgtype.Timestamptz
LastID interface{}
ToUserOrGroupID int64
InGroup bool
}
ListP2PMessageIDsByChatShardParams combines sqlc and routing-only shard parameters for ListP2PMessageIDsByChat.
type ListP2PMessagesByChatParams ¶
type ListP2PMessagesByChatParams struct {
Limit int32
UserID int64
PeerID int64
CreatedSince pgtype.Timestamptz
LastID interface{}
}
type ListP2PMessagesByChatShardParams ¶
type ListP2PMessagesByChatShardParams struct {
Limit int32
UserID int64
PeerID int64
CreatedSince pgtype.Timestamptz
LastID interface{}
ToUserOrGroupID int64
InGroup bool
}
ListP2PMessagesByChatShardParams combines sqlc and routing-only shard parameters for ListP2PMessagesByChat.
type Message ¶
type Message struct {
ID interface{}
UserID int64
ToUserOrGroupID int64
InGroup bool
CreatedAt pgtype.Timestamptz
DeletedAt pgtype.Timestamptz
}
type MessageInbox ¶
type NullAnalysisState ¶
type NullAnalysisState struct {
AnalysisState AnalysisState
Valid bool // Valid is true if AnalysisState is not NULL
}
func (*NullAnalysisState) Scan ¶
func (ns *NullAnalysisState) Scan(value interface{}) error
Scan implements the Scanner interface.
type Querier ¶
type Querier interface {
// kind: write
// shard: tenant(tenant_id)
// store: Users
CopyUsers(ctx context.Context, arg []*CopyUsersParams) (int64, error)
// kind: write
// shard: tenant(tenant_id)
// store: Users
CreateUser(ctx context.Context, arg *CreateUserParams) (*User, error)
// kind: write
// shard: all()
// store: Users
DeleteAllUsers(ctx context.Context) error
// kind: write
// shard: all()
// store: Users
DeleteAllUsersByName(ctx context.Context, name string) (int64, error)
// kind: read
// shard: tenant(tenant_id)
// store: Analyses
GetAnalysis(ctx context.Context, arg *GetAnalysisParams) (*Analysis, error)
// kind: read
// shard: tenant(tenant_id)
// store: Analyses
GetTenantUserAnalysis(ctx context.Context, arg *GetTenantUserAnalysisParams) (*GetTenantUserAnalysisRow, error)
// kind: read
// shard: tenant(tenant_id)
// store: Users
GetUser(ctx context.Context, arg *GetUserParams) (*User, error)
// kind: read
// shard: all()
// store: Users
ListAllUsers(ctx context.Context) ([]*User, error)
// kind: read
// shard: messageKey(user_id, to_user_or_group_id, in_group)
// store: QueryMessage
ListP2PMessageIDsByChat(ctx context.Context, arg *ListP2PMessageIDsByChatParams) ([]interface{}, error)
// kind: read
// shard: messageKey(user_id, to_user_or_group_id, in_group)
// store: QueryMessage
ListP2PMessagesByChat(ctx context.Context, arg *ListP2PMessagesByChatParams) ([]*Message, error)
// kind: write
// shard: tenant(tenant_id)
// store: Users
UpdateUserName(ctx context.Context, arg *UpdateUserNameParams) (*User, error)
}
type Queries ¶
type Queries struct {
// contains filtered or unexported fields
}
func (*Queries) CreateUser ¶
kind: write shard: tenant(tenant_id) store: Users
func (*Queries) DeleteAllUsers ¶
kind: write shard: all() store: Users
func (*Queries) DeleteAllUsersByName ¶
kind: write shard: all() store: Users
func (*Queries) GetAnalysis ¶
kind: read shard: tenant(tenant_id) store: Analyses
func (*Queries) GetTenantUserAnalysis ¶
func (q *Queries) GetTenantUserAnalysis(ctx context.Context, arg *GetTenantUserAnalysisParams) (*GetTenantUserAnalysisRow, error)
kind: read shard: tenant(tenant_id) store: Analyses
func (*Queries) ListAllUsers ¶
kind: read shard: all() store: Users
func (*Queries) ListP2PMessageIDsByChat ¶
func (q *Queries) ListP2PMessageIDsByChat(ctx context.Context, arg *ListP2PMessageIDsByChatParams) ([]interface{}, error)
kind: read shard: messageKey(user_id, to_user_or_group_id, in_group) store: QueryMessage
func (*Queries) ListP2PMessagesByChat ¶
func (q *Queries) ListP2PMessagesByChat(ctx context.Context, arg *ListP2PMessagesByChatParams) ([]*Message, error)
kind: read shard: messageKey(user_id, to_user_or_group_id, in_group) store: QueryMessage
func (*Queries) UpdateUserName ¶
kind: write shard: tenant(tenant_id) store: Users
type QueryMessage ¶
type QueryMessage interface {
QueryMessageReader
QueryMessageWriter
}
QueryMessage exposes all queries in its generated store group.
type QueryMessageReader ¶
type QueryMessageReader interface {
// ListP2PMessageIDsByChat executes the generated ListP2PMessageIDsByChat query.
ListP2PMessageIDsByChat(ctx context.Context, arg *ListP2PMessageIDsByChatShardParams, storeOptions ...QueryOption) ([]interface{}, error)
// ListP2PMessagesByChat executes the generated ListP2PMessagesByChat query.
ListP2PMessagesByChat(ctx context.Context, arg *ListP2PMessagesByChatShardParams, storeOptions ...QueryOption) ([]*Message, error)
}
QueryMessageReader exposes read queries in the QueryMessage store group.
type QueryMessageWriter ¶
type QueryMessageWriter interface {
}
QueryMessageWriter exposes write queries in the QueryMessage store group.
type QueryOption ¶
type QueryOption func(*queryOptions)
QueryOption customizes routing for one generated query call.
func ReadFromPrimary ¶
func ReadFromPrimary() QueryOption
ReadFromPrimary routes a read query to the primary database.
func WithTx ¶
func WithTx(tx pgx.Tx) QueryOption
WithTx executes a query through tx and suppresses write mirrors.
type ShardResolver ¶
type ShardResolver[SK any] interface { // Messagekey resolves the "messageKey" shard route. Messagekey(userID int64, toUserOrGroupID int64, inGroup bool) SK // Tenant resolves the "tenant" shard route. Tenant(tenantID int64) SK }
ShardResolver resolves generated query parameters to shard keys.
type ShardedOption ¶
type ShardedOption func(*shardedOptions)
ShardedOption customizes a sharded topology.
func WithReplicaSet ¶
func WithReplicaSet(name string, primary DBTX, replicas ...DBTX) ShardedOption
WithReplicaSet appends a named primary and its optional read replicas.
func WithVShardMapping ¶
func WithVShardMapping(mainReplicaSet string, vshards []uint64, mirrorReplicaSets ...string) ShardedOption
WithVShardMapping maps virtual shards to a main replica set and optional ordered write mirrors.
type SingletonOption ¶
type SingletonOption func(*singletonConfig)
SingletonOption customizes a single-database topology.
func WithDatabaseName ¶
func WithDatabaseName(name string) SingletonOption
WithDatabaseName identifies the database in telemetry. An empty name defaults to "default".
func WithReadReplicas ¶
func WithReadReplicas(databases ...DBTX) SingletonOption
WithReadReplicas appends databases used for round-robin reads.
func WithWriteMirrors ¶
func WithWriteMirrors(databases ...DBTX) SingletonOption
WithWriteMirrors appends databases that synchronously receive writes.
type Store ¶
type Store interface {
// Analyses returns the Analyses query group.
Analyses() Analyses
// QueryMessage returns the QueryMessage query group.
QueryMessage() QueryMessage
// Users returns the Users query group.
Users() Users
}
Store is the topology-independent generated query API.
Example ¶
log := &callLog{}
queries, err := NewStore(
context.Background(),
Sharded(
1,
pgmesh.ConstantShardHashFor[uint64](0),
tenantResolver{},
WithReplicaSet(
"main",
&fakeDB{name: "primary", log: log},
&fakeDB{name: "replica", log: log},
),
WithReplicaSet("mirror", &fakeDB{name: "mirror", log: log}),
WithVShardMapping("main", []uint64{0}, "mirror"),
),
)
if err != nil {
panic(err)
}
ctx := context.Background()
users := queries.Users()
if _, err := users.GetUser(ctx, &GetUserParams{TenantID: 10, ID: 20}); err != nil {
panic(err)
}
if _, err := users.GetUser(ctx, &GetUserParams{TenantID: 10, ID: 20}, ReadFromPrimary()); err != nil {
panic(err)
}
if _, err := users.CreateUser(ctx, &CreateUserParams{ID: 20, TenantID: 10, Name: "user"}); err != nil {
panic(err)
}
fmt.Println(log.snapshot())
Output: [replica primary primary mirror]
type StoreOption ¶
type StoreOption func(*storeOptions)
StoreOption customizes telemetry for a generated store.
func WithLogger ¶
func WithLogger(logger *slog.Logger) StoreOption
WithLogger configures optional structured logging for routed queries. A nil logger disables logging.
func WithMeterProvider ¶
func WithMeterProvider(provider metric.MeterProvider) StoreOption
WithMeterProvider configures the provider used for routed query metrics. A nil provider uses the global OpenTelemetry meter provider.
func WithTracerProvider ¶
func WithTracerProvider(provider trace.TracerProvider) StoreOption
WithTracerProvider configures the provider used for routed query spans. A nil provider uses the global OpenTelemetry tracer provider.
type Topology ¶
type Topology interface {
// contains filtered or unexported methods
}
Topology is an opaque database topology for Store.
func Sharded ¶
func Sharded[SK any](numVShards uint64, shardHasher pgmesh.ShardHasher[SK], resolver ShardResolver[SK], options ...ShardedOption) Topology
Sharded returns an opaque sharded topology.
func Singleton ¶
func Singleton(primary DBTX, options ...SingletonOption) Topology
Singleton returns a topology with one primary database.
type UpdateUserNameParams ¶
type Users ¶
type Users interface {
UsersReader
UsersWriter
}
Users exposes all queries in its generated store group.
type UsersReader ¶
type UsersReader interface {
// GetUser executes the generated GetUser query.
GetUser(ctx context.Context, arg *GetUserParams, storeOptions ...QueryOption) (*User, error)
// ListAllUsers executes the generated ListAllUsers query.
ListAllUsers(ctx context.Context, storeOptions ...QueryOption) ([]*User, error)
}
UsersReader exposes read queries in the Users store group.
type UsersWriter ¶
type UsersWriter interface {
// CopyUsers executes the generated CopyUsers query.
CopyUsers(ctx context.Context, arg []*CopyUsersParams, storeOptions ...QueryOption) (int64, error)
// CreateUser executes the generated CreateUser query.
CreateUser(ctx context.Context, arg *CreateUserParams, storeOptions ...QueryOption) (*User, error)
// DeleteAllUsers executes the generated DeleteAllUsers query.
DeleteAllUsers(ctx context.Context, storeOptions ...QueryOption) error
// DeleteAllUsersByName executes the generated DeleteAllUsersByName query.
DeleteAllUsersByName(ctx context.Context, name string, storeOptions ...QueryOption) (int64, error)
// UpdateUserName executes the generated UpdateUserName query.
UpdateUserName(ctx context.Context, arg *UpdateUserNameParams, storeOptions ...QueryOption) (*User, error)
}
UsersWriter exposes write queries in the Users store group.
Source Files
¶
- copyfrom.go
- queries.sql.go
- zz_generated_db.go
- zz_generated_models.go
- zz_generated_querier.go
- zz_generated_store.go
- zz_generated_store_analyses.go
- zz_generated_store_interfaces.go
- zz_generated_store_query_message.go
- zz_generated_store_read.go
- zz_generated_store_sharded.go
- zz_generated_store_users.go
- zz_generated_store_write.go