Documentation
¶
Index ¶
- Constants
- Variables
- type Admin
- func (a *Admin) CreateUser(ctx context.Context, params AdminUserParams) (*AdminUser, error)
- func (a *Admin) GenerateLink(ctx context.Context, params GenerateLinkParams) (*GenerateLinkResponse, error)
- func (a *Admin) GetUser(ctx context.Context, userID string) (*AdminUser, error)
- func (a *Admin) UpdateUser(ctx context.Context, userID string, params AdminUserParams) (*AdminUser, error)
- type AdminUser
- type AdminUserParams
- type Auth
- func (a *Auth) ExchangeCode(ctx context.Context, opts ExchangeCodeOpts) (*AuthenticatedDetails, error)
- func (a *Auth) InviteUserByEmail(ctx context.Context, email string) (*User, error)
- func (a *Auth) InviteUserByEmailWithData(ctx context.Context, email string, data map[string]interface{}, ...) (*User, error)
- func (a *Auth) RefreshUser(ctx context.Context, userToken string, refreshToken string) (*AuthenticatedDetails, error)
- func (a *Auth) ResetPasswordForEmail(ctx context.Context, email string) error
- func (a *Auth) SendMagicLink(ctx context.Context, email string) error
- func (a *Auth) SignIn(ctx context.Context, credentials UserCredentials) (*AuthenticatedDetails, error)
- func (a *Auth) SignInWithProvider(opts ProviderSignInOptions) (*ProviderSignInDetails, error)
- func (a *Auth) SignOut(ctx context.Context, userToken string) error
- func (a *Auth) SignUp(ctx context.Context, credentials UserCredentials) (*User, error)
- func (a *Auth) UpdateUser(ctx context.Context, userToken string, updateData map[string]interface{}) (*User, error)
- func (a *Auth) User(ctx context.Context, userToken string) (*User, error)
- type AuthenticatedDetails
- type BucketOption
- type Channel
- type Client
- type ErrorResponse
- type ExchangeCodeOpts
- type Factor
- type FileErrorResponse
- type FileObject
- type FileResponse
- type FileSearchOptions
- type FileUploadOptions
- type FlowType
- type GenerateLinkParams
- type GenerateLinkResponse
- type Identity
- type JSONMap
- type ListFileRequest
- type Listener
- type Message
- type PKCEParams
- type ProviderSignInDetails
- type ProviderSignInOptions
- type Realtime
- type SignedUrlResponse
- type SortBy
- type Storage
- func (s *Storage) CreateBucket(ctx context.Context, option BucketOption) (*bucket, error)
- func (s *Storage) DeleteBucket(ctx context.Context, id string) (*bucketResponse, error)
- func (s *Storage) EmptyBucket(ctx context.Context, id string) (*bucketMessage, error)
- func (s *Storage) From(bucketId string) *file
- func (s *Storage) GetBucket(ctx context.Context, id string) (*bucketResponse, error)
- func (s *Storage) ListBuckets(ctx context.Context) (*[]bucketResponse, error)
- func (s *Storage) UpdateBucket(ctx context.Context, id string, option BucketOption) (*bucketMessage, error)
- type User
- type UserCredentials
Constants ¶
const ( AuthEndpoint = "auth/v1" AdminEndpoint = "auth/v1/admin" RestEndpoint = "rest/v1" StorageEndpoint = "storage/v1" RealtimeEndpoint = "realtime/v1" )
Variables ¶
var ErrNotFound = errors.New("file not found")
Functions ¶
This section is empty.
Types ¶
type Admin ¶
type Admin struct {
// contains filtered or unexported fields
}
func (*Admin) CreateUser ¶
Create a user
func (*Admin) GenerateLink ¶
func (a *Admin) GenerateLink(ctx context.Context, params GenerateLinkParams) (*GenerateLinkResponse, error)
Update a user
func (*Admin) UpdateUser ¶
func (a *Admin) UpdateUser(ctx context.Context, userID string, params AdminUserParams) (*AdminUser, error)
Update a user
type AdminUser ¶
type AdminUser struct {
ID string `json:"id" db:"id"`
Aud string `json:"aud" db:"aud"`
Role string `json:"role" db:"role"`
Email string `json:"email" db:"email"`
EmailConfirmedAt *time.Time `json:"email_confirmed_at,omitempty" db:"email_confirmed_at"`
InvitedAt *time.Time `json:"invited_at,omitempty" db:"invited_at"`
Phone string `json:"phone" db:"phone"`
PhoneConfirmedAt *time.Time `json:"phone_confirmed_at,omitempty" db:"phone_confirmed_at"`
ConfirmationSentAt *time.Time `json:"confirmation_sent_at,omitempty" db:"confirmation_sent_at"`
RecoverySentAt *time.Time `json:"recovery_sent_at,omitempty" db:"recovery_sent_at"`
EmailChange string `json:"new_email,omitempty" db:"email_change"`
EmailChangeSentAt *time.Time `json:"email_change_sent_at,omitempty" db:"email_change_sent_at"`
PhoneChange string `json:"new_phone,omitempty" db:"phone_change"`
PhoneChangeSentAt *time.Time `json:"phone_change_sent_at,omitempty" db:"phone_change_sent_at"`
ReauthenticationSentAt *time.Time `json:"reauthentication_sent_at,omitempty" db:"reauthentication_sent_at"`
LastSignInAt *time.Time `json:"last_sign_in_at,omitempty" db:"last_sign_in_at"`
AppMetaData JSONMap `json:"app_metadata" db:"raw_app_meta_data"`
UserMetaData JSONMap `json:"user_metadata" db:"raw_user_meta_data"`
Factors []Factor `json:"factors,omitempty" has_many:"factors"`
Identities []Identity `json:"identities" has_many:"identities"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
BannedUntil *time.Time `json:"banned_until,omitempty" db:"banned_until"`
DeletedAt *time.Time `json:"deleted_at,omitempty" db:"deleted_at"`
}
type AdminUserParams ¶
type AdminUserParams struct {
Role string `json:"role"`
Email string `json:"email"`
Phone string `json:"phone"`
Password *string `json:"password"`
EmailConfirm bool `json:"email_confirm"`
PhoneConfirm bool `json:"phone_confirm"`
UserMetadata JSONMap `json:"user_metadata"`
AppMetadata JSONMap `json:"app_metadata"`
BanDuration string `json:"ban_duration"`
}
type Auth ¶
type Auth struct {
// contains filtered or unexported fields
}
func (*Auth) ExchangeCode ¶
func (a *Auth) ExchangeCode(ctx context.Context, opts ExchangeCodeOpts) (*AuthenticatedDetails, error)
ExchangeCode takes an auth code and PCKE verifier and returns the current user if succeeded.
func (*Auth) InviteUserByEmail ¶
InviteUserByEmail sends an invite link to the given email. Returns a user.
func (*Auth) InviteUserByEmailWithData ¶
func (a *Auth) InviteUserByEmailWithData(ctx context.Context, email string, data map[string]interface{}, redirectTo string) (*User, error)
InviteUserByEmailWithOpts sends an invite link to the given email with metadata. Returns a user.
func (*Auth) RefreshUser ¶
func (a *Auth) RefreshUser(ctx context.Context, userToken string, refreshToken string) (*AuthenticatedDetails, error)
SignIn enters the user credentials and returns the current user if succeeded.
func (*Auth) ResetPasswordForEmail ¶
ResetPasswordForEmail sends a password recovery link to the given e-mail address.
func (*Auth) SendMagicLink ¶
SendMagicLink sends a link to a specific e-mail address for passwordless auth.
func (*Auth) SignIn ¶
func (a *Auth) SignIn(ctx context.Context, credentials UserCredentials) (*AuthenticatedDetails, error)
SignIn enters the user credentials and returns the current user if succeeded.
func (*Auth) SignInWithProvider ¶
func (a *Auth) SignInWithProvider(opts ProviderSignInOptions) (*ProviderSignInDetails, error)
SignInWithProvider returns a URL for signing in via OAuth
type AuthenticatedDetails ¶
type AuthenticatedDetails struct {
AccessToken string `json:"access_token"`
TokenType string `json:"token_type"`
ExpiresIn int `json:"expires_in"`
RefreshToken string `json:"refresh_token"`
User User `json:"user"`
ProviderToken string `json:"provider_token"`
ProviderRefreshToken string `json:"provider_refresh_token"`
}
type BucketOption ¶
type Channel ¶
type Channel struct {
Topic string
Url string
Origin string
OnDisconnect func(*Channel)
OnConnect func(*Channel)
// contains filtered or unexported fields
}
Channel represents a realtime channel.
All exported fields (Topic, Url, Origin, OnConnect, OnDisconnect) must be set before Listen() or the first Send() and treated as read-only after; they are read from internal goroutines without synchronization.
OnConnect and OnDisconnect are invoked from internal goroutines, so they may call Close() without deadlocking. They are not serialized with each other — a slow OnConnect can overlap with the next OnDisconnect, and in rare races (Close() arriving just as a connect goroutine is being launched) you may observe an OnDisconnect with no preceding OnConnect. Listener callbacks registered with On(...) run synchronously on the read goroutine and MUST NOT call Close().
func (*Channel) Close ¶
func (c *Channel) Close()
Close terminates the channel. Subsequent reconnect signals are ignored, keepAlive (if running) exits, the websocket is closed, and further Send calls return errChannelClosed. Safe to call more than once. On return c.connected is false and c.ws is closed regardless of whether Listen() was called.
Close does not wait for the read goroutine or for OnConnect/OnDisconnect callback goroutines, which is what makes it safe to call from those callbacks.
func (*Channel) IsConnected ¶
IsConnected reports whether the channel currently believes it has an open websocket. It is a snapshot — by the time the caller acts on it, the channel may have disconnected.
func (*Channel) Listen ¶
Listen connects the channel and starts the keepAlive loop. It must be called at most once per channel; calling it twice would spawn two keepAlive goroutines, doubling heartbeats and racing on shutdown. If Listen returns an error, the channel can be retried (started is reset).
func (*Channel) RemoveCallbacksForEvent ¶
type Client ¶
type Client struct {
BaseURL string
Headers map[string]string
HTTPClient *http.Client
Admin *Admin
Auth *Auth
Storage *Storage
Realtime *Realtime
DB *postgrest.Client
// contains filtered or unexported fields
}
func CreateClient ¶
CreateClient creates a new Supabase client
type ErrorResponse ¶
func (*ErrorResponse) Error ¶
func (err *ErrorResponse) Error() string
type ExchangeCodeOpts ¶
type Factor ¶
type Factor struct {
ID string `json:"id" db:"id"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
Status string `json:"status" db:"status"`
FriendlyName string `json:"friendly_name,omitempty" db:"friendly_name"`
FactorType string `json:"factor_type" db:"factor_type"`
}
type FileErrorResponse ¶
type FileErrorResponse struct {
Status string `json:"statusCode"`
ShortError string `json:"error"`
Message string `json:"message"`
}
func (*FileErrorResponse) Error ¶
func (err *FileErrorResponse) Error() string
type FileObject ¶
type FileObject struct {
Name string `json:"name"`
BucketId string `json:"bucket_id"`
Owner string `json:"owner"`
Id string `json:"id"`
UpdatedAt string `json:"updated_at"`
CreatedAt string `json:"created_at"`
LastAccessedAt string `json:"last_accessed_at"`
Metadata interface{} `json:"metadata"`
Buckets bucket `json:"buckets"`
}
type FileResponse ¶
type FileSearchOptions ¶
type FileUploadOptions ¶
type GenerateLinkParams ¶
type GenerateLinkResponse ¶
type Identity ¶
type Identity struct {
ID string `json:"id" db:"id"`
UserID string `json:"user_id" db:"user_id"`
IdentityData JSONMap `json:"identity_data,omitempty" db:"identity_data"`
Provider string `json:"provider" db:"provider"`
LastSignInAt *time.Time `json:"last_sign_in_at,omitempty" db:"last_sign_in_at"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
}
type ListFileRequest ¶
type PKCEParams ¶
adapted from https://go-review.googlesource.com/c/oauth2/+/463979/9/pkce.go#64
type ProviderSignInDetails ¶
type ProviderSignInOptions ¶
type SignedUrlResponse ¶
type SignedUrlResponse struct {
SignedUrl string `json:"signedURL"`
}
type Storage ¶
type Storage struct {
// contains filtered or unexported fields
}
func (*Storage) CreateBucket ¶
func (s *Storage) CreateBucket(ctx context.Context, option BucketOption) (*bucket, error)
CreateBucket creates a new storage bucket @param: option: a bucketOption with the name and id of the bucket you want to create @returns: bucket: a response with the details of the bucket of the bucket created
func (*Storage) DeleteBucket ¶
DeleteBucket deletes a bucket by its id, a bucket can't be deleted except emptied @param: id: the id of the bucket @returns bucketMessage: a successful response message or failed
func (*Storage) EmptyBucket ¶
EmptyBucket empties the object of a bucket by id @param: id: the id of the bucket @returns bucketMessage: a successful response message or failed
func (*Storage) GetBucket ¶
GetBucket retrieves a bucket by its id @param: id: the id of the bucket @returns: bucketResponse: a response with the details of the bucket
func (*Storage) ListBuckets ¶
ListBucket retrieves all buckets ina supabase storage @returns: []bucketResponse: a response with the details of all the bucket
func (*Storage) UpdateBucket ¶
func (s *Storage) UpdateBucket(ctx context.Context, id string, option BucketOption) (*bucketMessage, error)
UpdateBucket updates a bucket by its id @param: id: the id of the bucket @param: option: the options to be updated @returns bucketMessage: a successful response message or failed
type User ¶
type User struct {
ID string `json:"id"`
Aud string `json:"aud"`
Role string `json:"role"`
Email string `json:"email"`
InvitedAt time.Time `json:"invited_at"`
ConfirmedAt time.Time `json:"confirmed_at"`
ConfirmationSentAt time.Time `json:"confirmation_sent_at"`
AppMetadata struct {
// contains filtered or unexported fields
} `json:"app_metadata"`
UserMetadata map[string]interface{} `json:"user_metadata"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}