mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
feat: add tables for PGCoordinator v2 (#10442)
Adds tables for a simplified PG Coordinator that only considers Peers and Tunnels, rather than agent/client distinctions we have today.
This commit is contained in:
@@ -1289,6 +1289,64 @@ func AllStartupScriptBehaviorValues() []StartupScriptBehavior {
|
||||
}
|
||||
}
|
||||
|
||||
type TailnetStatus string
|
||||
|
||||
const (
|
||||
TailnetStatusOk TailnetStatus = "ok"
|
||||
TailnetStatusLost TailnetStatus = "lost"
|
||||
)
|
||||
|
||||
func (e *TailnetStatus) Scan(src interface{}) error {
|
||||
switch s := src.(type) {
|
||||
case []byte:
|
||||
*e = TailnetStatus(s)
|
||||
case string:
|
||||
*e = TailnetStatus(s)
|
||||
default:
|
||||
return fmt.Errorf("unsupported scan type for TailnetStatus: %T", src)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type NullTailnetStatus struct {
|
||||
TailnetStatus TailnetStatus `json:"tailnet_status"`
|
||||
Valid bool `json:"valid"` // Valid is true if TailnetStatus is not NULL
|
||||
}
|
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (ns *NullTailnetStatus) Scan(value interface{}) error {
|
||||
if value == nil {
|
||||
ns.TailnetStatus, ns.Valid = "", false
|
||||
return nil
|
||||
}
|
||||
ns.Valid = true
|
||||
return ns.TailnetStatus.Scan(value)
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (ns NullTailnetStatus) Value() (driver.Value, error) {
|
||||
if !ns.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return string(ns.TailnetStatus), nil
|
||||
}
|
||||
|
||||
func (e TailnetStatus) Valid() bool {
|
||||
switch e {
|
||||
case TailnetStatusOk,
|
||||
TailnetStatusLost:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func AllTailnetStatusValues() []TailnetStatus {
|
||||
return []TailnetStatus{
|
||||
TailnetStatusOk,
|
||||
TailnetStatusLost,
|
||||
}
|
||||
}
|
||||
|
||||
// Defines the user status: active, dormant, or suspended.
|
||||
type UserStatus string
|
||||
|
||||
@@ -1865,6 +1923,21 @@ type TailnetCoordinator struct {
|
||||
HeartbeatAt time.Time `db:"heartbeat_at" json:"heartbeat_at"`
|
||||
}
|
||||
|
||||
type TailnetPeer struct {
|
||||
ID uuid.UUID `db:"id" json:"id"`
|
||||
CoordinatorID uuid.UUID `db:"coordinator_id" json:"coordinator_id"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
||||
Node []byte `db:"node" json:"node"`
|
||||
Status TailnetStatus `db:"status" json:"status"`
|
||||
}
|
||||
|
||||
type TailnetTunnel struct {
|
||||
CoordinatorID uuid.UUID `db:"coordinator_id" json:"coordinator_id"`
|
||||
SrcID uuid.UUID `db:"src_id" json:"src_id"`
|
||||
DstID uuid.UUID `db:"dst_id" json:"dst_id"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
||||
}
|
||||
|
||||
// Joins in the username + avatar url of the created by user.
|
||||
type Template struct {
|
||||
ID uuid.UUID `db:"id" json:"id"`
|
||||
|
||||
Reference in New Issue
Block a user