Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package core is the backbone of PocketBase.
It defines the main PocketBase App interface and its base implementation.
Index ¶
- Constants
 - type AdminAuthEvent
 - type AdminCreateEvent
 - type AdminDeleteEvent
 - type AdminUpdateEvent
 - type AdminViewEvent
 - type AdminsListEvent
 - type App
 - type AuthProviderConfig
 - type BaseApp
 - func (app *BaseApp) Bootstrap() error
 - func (app *BaseApp) Cache() *store.Store[any]
 - func (app *BaseApp) DB() *dbx.DB
 - func (app *BaseApp) Dao() *daos.Dao
 - func (app *BaseApp) DataDir() string
 - func (app *BaseApp) EncryptionEnv() string
 - func (app *BaseApp) IsDebug() bool
 - func (app *BaseApp) LogsDB() *dbx.DB
 - func (app *BaseApp) LogsDao() *daos.Dao
 - func (app *BaseApp) NewFilesystem() (*filesystem.System, error)
 - func (app *BaseApp) NewMailClient() mailer.Mailer
 - func (app *BaseApp) OnAdminAfterCreateRequest() *hook.Hook[*AdminCreateEvent]
 - func (app *BaseApp) OnAdminAfterDeleteRequest() *hook.Hook[*AdminDeleteEvent]
 - func (app *BaseApp) OnAdminAfterUpdateRequest() *hook.Hook[*AdminUpdateEvent]
 - func (app *BaseApp) OnAdminAuthRequest() *hook.Hook[*AdminAuthEvent]
 - func (app *BaseApp) OnAdminBeforeCreateRequest() *hook.Hook[*AdminCreateEvent]
 - func (app *BaseApp) OnAdminBeforeDeleteRequest() *hook.Hook[*AdminDeleteEvent]
 - func (app *BaseApp) OnAdminBeforeUpdateRequest() *hook.Hook[*AdminUpdateEvent]
 - func (app *BaseApp) OnAdminViewRequest() *hook.Hook[*AdminViewEvent]
 - func (app *BaseApp) OnAdminsListRequest() *hook.Hook[*AdminsListEvent]
 - func (app *BaseApp) OnBeforeServe() *hook.Hook[*ServeEvent]
 - func (app *BaseApp) OnCollectionAfterCreateRequest() *hook.Hook[*CollectionCreateEvent]
 - func (app *BaseApp) OnCollectionAfterDeleteRequest() *hook.Hook[*CollectionDeleteEvent]
 - func (app *BaseApp) OnCollectionAfterUpdateRequest() *hook.Hook[*CollectionUpdateEvent]
 - func (app *BaseApp) OnCollectionBeforeCreateRequest() *hook.Hook[*CollectionCreateEvent]
 - func (app *BaseApp) OnCollectionBeforeDeleteRequest() *hook.Hook[*CollectionDeleteEvent]
 - func (app *BaseApp) OnCollectionBeforeUpdateRequest() *hook.Hook[*CollectionUpdateEvent]
 - func (app *BaseApp) OnCollectionViewRequest() *hook.Hook[*CollectionViewEvent]
 - func (app *BaseApp) OnCollectionsListRequest() *hook.Hook[*CollectionsListEvent]
 - func (app *BaseApp) OnFileDownloadRequest() *hook.Hook[*FileDownloadEvent]
 - func (app *BaseApp) OnMailerAfterAdminResetPasswordSend() *hook.Hook[*MailerAdminEvent]
 - func (app *BaseApp) OnMailerAfterUserChangeEmailSend() *hook.Hook[*MailerUserEvent]
 - func (app *BaseApp) OnMailerAfterUserResetPasswordSend() *hook.Hook[*MailerUserEvent]
 - func (app *BaseApp) OnMailerAfterUserVerificationSend() *hook.Hook[*MailerUserEvent]
 - func (app *BaseApp) OnMailerBeforeAdminResetPasswordSend() *hook.Hook[*MailerAdminEvent]
 - func (app *BaseApp) OnMailerBeforeUserChangeEmailSend() *hook.Hook[*MailerUserEvent]
 - func (app *BaseApp) OnMailerBeforeUserResetPasswordSend() *hook.Hook[*MailerUserEvent]
 - func (app *BaseApp) OnMailerBeforeUserVerificationSend() *hook.Hook[*MailerUserEvent]
 - func (app *BaseApp) OnModelAfterCreate() *hook.Hook[*ModelEvent]
 - func (app *BaseApp) OnModelAfterDelete() *hook.Hook[*ModelEvent]
 - func (app *BaseApp) OnModelAfterUpdate() *hook.Hook[*ModelEvent]
 - func (app *BaseApp) OnModelBeforeCreate() *hook.Hook[*ModelEvent]
 - func (app *BaseApp) OnModelBeforeDelete() *hook.Hook[*ModelEvent]
 - func (app *BaseApp) OnModelBeforeUpdate() *hook.Hook[*ModelEvent]
 - func (app *BaseApp) OnRealtimeAfterSubscribeRequest() *hook.Hook[*RealtimeSubscribeEvent]
 - func (app *BaseApp) OnRealtimeBeforeSubscribeRequest() *hook.Hook[*RealtimeSubscribeEvent]
 - func (app *BaseApp) OnRealtimeConnectRequest() *hook.Hook[*RealtimeConnectEvent]
 - func (app *BaseApp) OnRecordAfterCreateRequest() *hook.Hook[*RecordCreateEvent]
 - func (app *BaseApp) OnRecordAfterDeleteRequest() *hook.Hook[*RecordDeleteEvent]
 - func (app *BaseApp) OnRecordAfterUpdateRequest() *hook.Hook[*RecordUpdateEvent]
 - func (app *BaseApp) OnRecordBeforeCreateRequest() *hook.Hook[*RecordCreateEvent]
 - func (app *BaseApp) OnRecordBeforeDeleteRequest() *hook.Hook[*RecordDeleteEvent]
 - func (app *BaseApp) OnRecordBeforeUpdateRequest() *hook.Hook[*RecordUpdateEvent]
 - func (app *BaseApp) OnRecordViewRequest() *hook.Hook[*RecordViewEvent]
 - func (app *BaseApp) OnRecordsListRequest() *hook.Hook[*RecordsListEvent]
 - func (app *BaseApp) OnSettingsAfterUpdateRequest() *hook.Hook[*SettingsUpdateEvent]
 - func (app *BaseApp) OnSettingsBeforeUpdateRequest() *hook.Hook[*SettingsUpdateEvent]
 - func (app *BaseApp) OnSettingsListRequest() *hook.Hook[*SettingsListEvent]
 - func (app *BaseApp) OnUserAfterCreateRequest() *hook.Hook[*UserCreateEvent]
 - func (app *BaseApp) OnUserAfterDeleteRequest() *hook.Hook[*UserDeleteEvent]
 - func (app *BaseApp) OnUserAfterOauth2Register() *hook.Hook[*UserOauth2RegisterEvent]
 - func (app *BaseApp) OnUserAfterUpdateRequest() *hook.Hook[*UserUpdateEvent]
 - func (app *BaseApp) OnUserAuthRequest() *hook.Hook[*UserAuthEvent]
 - func (app *BaseApp) OnUserBeforeCreateRequest() *hook.Hook[*UserCreateEvent]
 - func (app *BaseApp) OnUserBeforeDeleteRequest() *hook.Hook[*UserDeleteEvent]
 - func (app *BaseApp) OnUserBeforeOauth2Register() *hook.Hook[*UserOauth2RegisterEvent]
 - func (app *BaseApp) OnUserBeforeUpdateRequest() *hook.Hook[*UserUpdateEvent]
 - func (app *BaseApp) OnUserViewRequest() *hook.Hook[*UserViewEvent]
 - func (app *BaseApp) OnUsersListRequest() *hook.Hook[*UsersListEvent]
 - func (app *BaseApp) RefreshSettings() error
 - func (app *BaseApp) ResetBootstrapState() error
 - func (app *BaseApp) Settings() *Settings
 - func (app *BaseApp) SubscriptionsBroker() *subscriptions.Broker
 
- type CollectionCreateEvent
 - type CollectionDeleteEvent
 - type CollectionUpdateEvent
 - type CollectionViewEvent
 - type CollectionsListEvent
 - type EmailAuthConfig
 - type FileDownloadEvent
 - type LogsConfig
 - type MailerAdminEvent
 - type MailerUserEvent
 - type MetaConfig
 - type ModelEvent
 - type RealtimeConnectEvent
 - type RealtimeSubscribeEvent
 - type RecordCreateEvent
 - type RecordDeleteEvent
 - type RecordUpdateEvent
 - type RecordViewEvent
 - type RecordsListEvent
 - type S3Config
 - type ServeEvent
 - type Settings
 - type SettingsListEvent
 - type SettingsUpdateEvent
 - type SmtpConfig
 - type TokenConfig
 - type UserAuthEvent
 - type UserCreateEvent
 - type UserDeleteEvent
 - type UserOauth2RegisterEvent
 - type UserUpdateEvent
 - type UserViewEvent
 - type UsersListEvent
 
Constants ¶
const ( EmailPlaceholderAppUrl string = "%APP_URL%" EmailPlaceholderToken string = "%TOKEN%" )
Common settings placeholder tokens
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminAuthEvent ¶
type AdminCreateEvent ¶
type AdminDeleteEvent ¶
type AdminUpdateEvent ¶
type AdminViewEvent ¶
type AdminsListEvent ¶
type App ¶
type App interface {
	// DB returns the default app database instance.
	DB() *dbx.DB
	// Dao returns the default app Dao instance.
	//
	// This Dao could operate only on the tables and models
	// associated with the default app database. For example,
	// trying to access the request logs table will result in error.
	Dao() *daos.Dao
	// LogsDB returns the app logs database instance.
	LogsDB() *dbx.DB
	// LogsDao returns the app logs Dao instance.
	//
	// This Dao could operate only on the tables and models
	// associated with the logs database. For example, trying to access
	// the users table from LogsDao will result in error.
	LogsDao() *daos.Dao
	// DataDir returns the app data directory path.
	DataDir() string
	// EncryptionEnv returns the name of the app secret env key
	// (used for settings encryption).
	EncryptionEnv() string
	// IsDebug returns whether the app is in debug mode
	// (showing more detailed error logs, executed sql statements, etc.).
	IsDebug() bool
	// Settings returns the loaded app settings.
	Settings() *Settings
	// Cache returns the app internal cache store.
	Cache() *store.Store[any]
	// SubscriptionsBroker returns the app realtime subscriptions broker instance.
	SubscriptionsBroker() *subscriptions.Broker
	// NewMailClient creates and returns a configured app mail client.
	NewMailClient() mailer.Mailer
	// NewFilesystem creates and returns a configured filesystem.System instance.
	//
	// NB! Make sure to call `Close()` on the returned result
	// after you are done working with it.
	NewFilesystem() (*filesystem.System, error)
	// RefreshSettings reinitializes and reloads the stored application settings.
	RefreshSettings() error
	// Bootstrap takes care for initializing the application
	// (open db connections, load settings, etc.)
	Bootstrap() error
	// ResetBootstrapState takes care for releasing initialized app resources
	// (eg. closing db connections).
	ResetBootstrapState() error
	// OnBeforeServe hook is triggered before serving the internal router (echo),
	// allowing you to adjust its options and attach new routes.
	OnBeforeServe() *hook.Hook[*ServeEvent]
	// OnModelBeforeCreate hook is triggered before inserting a new
	// entry in the DB, allowing you to modify or validate the stored data.
	OnModelBeforeCreate() *hook.Hook[*ModelEvent]
	// OnModelAfterCreate hook is triggered after successfully
	// inserting a new entry in the DB.
	OnModelAfterCreate() *hook.Hook[*ModelEvent]
	// OnModelBeforeUpdate hook is triggered before updating existing
	// entry in the DB, allowing you to modify or validate the stored data.
	OnModelBeforeUpdate() *hook.Hook[*ModelEvent]
	// OnModelAfterUpdate hook is triggered after successfully updating
	// existing entry in the DB.
	OnModelAfterUpdate() *hook.Hook[*ModelEvent]
	// OnModelBeforeDelete hook is triggered before deleting an
	// existing entry from the DB.
	OnModelBeforeDelete() *hook.Hook[*ModelEvent]
	// OnModelAfterDelete is triggered after successfully deleting an
	// existing entry from the DB.
	OnModelAfterDelete() *hook.Hook[*ModelEvent]
	// OnMailerBeforeAdminResetPasswordSend hook is triggered right before
	// sending a password reset email to an admin.
	//
	// Could be used to send your own custom email template if
	// hook.StopPropagation is returned in one of its listeners.
	OnMailerBeforeAdminResetPasswordSend() *hook.Hook[*MailerAdminEvent]
	// OnMailerAfterAdminResetPasswordSend hook is triggered after
	// admin password reset email was successfully sent.
	OnMailerAfterAdminResetPasswordSend() *hook.Hook[*MailerAdminEvent]
	// OnMailerBeforeUserResetPasswordSend hook is triggered right before
	// sending a password reset email to a user.
	//
	// Could be used to send your own custom email template if
	// hook.StopPropagation is returned in one of its listeners.
	OnMailerBeforeUserResetPasswordSend() *hook.Hook[*MailerUserEvent]
	// OnMailerAfterUserResetPasswordSend hook is triggered after
	// a user password reset email was successfully sent.
	OnMailerAfterUserResetPasswordSend() *hook.Hook[*MailerUserEvent]
	// OnMailerBeforeUserVerificationSend hook is triggered right before
	// sending a verification email to a user.
	//
	// Could be used to send your own custom email template if
	// hook.StopPropagation is returned in one of its listeners.
	OnMailerBeforeUserVerificationSend() *hook.Hook[*MailerUserEvent]
	// OnMailerAfterUserVerificationSend hook is triggered after a user
	// verification email was successfully sent.
	OnMailerAfterUserVerificationSend() *hook.Hook[*MailerUserEvent]
	// OnMailerBeforeUserChangeEmailSend hook is triggered right before
	// sending a confirmation new address email to a a user.
	//
	// Could be used to send your own custom email template if
	// hook.StopPropagation is returned in one of its listeners.
	OnMailerBeforeUserChangeEmailSend() *hook.Hook[*MailerUserEvent]
	// OnMailerAfterUserChangeEmailSend hook is triggered after a user
	// change address email was successfully sent.
	OnMailerAfterUserChangeEmailSend() *hook.Hook[*MailerUserEvent]
	// OnRealtimeConnectRequest hook is triggered right before establishing
	// the SSE client connection.
	OnRealtimeConnectRequest() *hook.Hook[*RealtimeConnectEvent]
	// OnRealtimeBeforeSubscribeRequest hook is triggered before changing
	// the client subscriptions, allowing you to further validate and
	// modify the submitted change.
	OnRealtimeBeforeSubscribeRequest() *hook.Hook[*RealtimeSubscribeEvent]
	// OnRealtimeAfterSubscribeRequest hook is triggered after the client
	// subscriptions were successfully changed.
	OnRealtimeAfterSubscribeRequest() *hook.Hook[*RealtimeSubscribeEvent]
	// OnSettingsListRequest hook is triggered on each successful
	// API Settings list request.
	//
	// Could be used to validate or modify the response before
	// returning it to the client.
	OnSettingsListRequest() *hook.Hook[*SettingsListEvent]
	// OnSettingsBeforeUpdateRequest hook is triggered before each API
	// Settings update request (after request data load and before settings persistence).
	//
	// Could be used to additionally validate the request data or
	// implement completely different persistence behavior
	// (returning hook.StopPropagation).
	OnSettingsBeforeUpdateRequest() *hook.Hook[*SettingsUpdateEvent]
	// OnSettingsAfterUpdateRequest hook is triggered after each
	// successful API Settings update request.
	OnSettingsAfterUpdateRequest() *hook.Hook[*SettingsUpdateEvent]
	// OnFileDownloadRequest hook is triggered before each API File download request.
	//
	// Could be used to validate or modify the file response before
	// returning it to the client.
	OnFileDownloadRequest() *hook.Hook[*FileDownloadEvent]
	// OnAdminsListRequest hook is triggered on each API Admins list request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnAdminsListRequest() *hook.Hook[*AdminsListEvent]
	// OnAdminViewRequest hook is triggered on each API Admin view request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnAdminViewRequest() *hook.Hook[*AdminViewEvent]
	// OnAdminBeforeCreateRequest hook is triggered before each API
	// Admin create request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnAdminBeforeCreateRequest() *hook.Hook[*AdminCreateEvent]
	// OnAdminAfterCreateRequest hook is triggered after each
	// successful API Admin create request.
	OnAdminAfterCreateRequest() *hook.Hook[*AdminCreateEvent]
	// OnAdminBeforeUpdateRequest hook is triggered before each API
	// Admin update request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnAdminBeforeUpdateRequest() *hook.Hook[*AdminUpdateEvent]
	// OnAdminAfterUpdateRequest hook is triggered after each
	// successful API Admin update request.
	OnAdminAfterUpdateRequest() *hook.Hook[*AdminUpdateEvent]
	// OnAdminBeforeDeleteRequest hook is triggered before each API
	// Admin delete request (after model load and before actual deletion).
	//
	// Could be used to additionally validate the request data or implement
	// completely different delete behavior (returning hook.StopPropagation).
	OnAdminBeforeDeleteRequest() *hook.Hook[*AdminDeleteEvent]
	// OnAdminAfterDeleteRequest hook is triggered after each
	// successful API Admin delete request.
	OnAdminAfterDeleteRequest() *hook.Hook[*AdminDeleteEvent]
	// OnAdminAuthRequest hook is triggered on each successful API Admin
	// authentication request (sign-in, token refresh, etc.).
	//
	// Could be used to additionally validate or modify the
	// authenticated admin data and token.
	OnAdminAuthRequest() *hook.Hook[*AdminAuthEvent]
	// OnUsersListRequest hook is triggered on each API Users list request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnUsersListRequest() *hook.Hook[*UsersListEvent]
	// OnUserViewRequest hook is triggered on each API User view request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnUserViewRequest() *hook.Hook[*UserViewEvent]
	// OnUserBeforeCreateRequest hook is triggered before each API User
	// create request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnUserBeforeCreateRequest() *hook.Hook[*UserCreateEvent]
	// OnUserAfterCreateRequest hook is triggered after each
	// successful API User create request.
	OnUserAfterCreateRequest() *hook.Hook[*UserCreateEvent]
	// OnUserBeforeUpdateRequest hook is triggered before each API User
	// update request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnUserBeforeUpdateRequest() *hook.Hook[*UserUpdateEvent]
	// OnUserAfterUpdateRequest hook is triggered after each
	// successful API User update request.
	OnUserAfterUpdateRequest() *hook.Hook[*UserUpdateEvent]
	// OnUserBeforeDeleteRequest hook is triggered before each API User
	// delete request (after model load and before actual deletion).
	//
	// Could be used to additionally validate the request data or implement
	// completely different delete behavior (returning hook.StopPropagation).
	OnUserBeforeDeleteRequest() *hook.Hook[*UserDeleteEvent]
	// OnUserAfterDeleteRequest hook is triggered after each
	// successful API User delete request.
	OnUserAfterDeleteRequest() *hook.Hook[*UserDeleteEvent]
	// OnUserAuthRequest hook is triggered on each successful API User
	// authentication request (sign-in, token refresh, etc.).
	//
	// Could be used to additionally validate or modify the
	// authenticated user data and token.
	OnUserAuthRequest() *hook.Hook[*UserAuthEvent]
	// OnUserBeforeOauth2Register hook is triggered before each User OAuth2
	// authentication request (when the client config has enabled new users registration).
	//
	// Could be used to additionally validate or modify the new user
	// before persisting in the DB.
	OnUserBeforeOauth2Register() *hook.Hook[*UserOauth2RegisterEvent]
	// OnUserAfterOauth2Register hook is triggered after each successful User
	// OAuth2 authentication sign-up request (right after the new user persistence).
	OnUserAfterOauth2Register() *hook.Hook[*UserOauth2RegisterEvent]
	// OnRecordsListRequest hook is triggered on each API Records list request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnRecordsListRequest() *hook.Hook[*RecordsListEvent]
	// OnRecordViewRequest hook is triggered on each API Record view request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnRecordViewRequest() *hook.Hook[*RecordViewEvent]
	// OnRecordBeforeCreateRequest hook is triggered before each API Record
	// create request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnRecordBeforeCreateRequest() *hook.Hook[*RecordCreateEvent]
	// OnRecordAfterCreateRequest hook is triggered after each
	// successful API Record create request.
	OnRecordAfterCreateRequest() *hook.Hook[*RecordCreateEvent]
	// OnRecordBeforeUpdateRequest hook is triggered before each API Record
	// update request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnRecordBeforeUpdateRequest() *hook.Hook[*RecordUpdateEvent]
	// OnRecordAfterUpdateRequest hook is triggered after each
	// successful API Record update request.
	OnRecordAfterUpdateRequest() *hook.Hook[*RecordUpdateEvent]
	// OnRecordBeforeDeleteRequest hook is triggered before each API Record
	// delete request (after model load and before actual deletion).
	//
	// Could be used to additionally validate the request data or implement
	// completely different delete behavior (returning hook.StopPropagation).
	OnRecordBeforeDeleteRequest() *hook.Hook[*RecordDeleteEvent]
	// OnRecordAfterDeleteRequest hook is triggered after each
	// successful API Record delete request.
	OnRecordAfterDeleteRequest() *hook.Hook[*RecordDeleteEvent]
	// OnCollectionsListRequest hook is triggered on each API Collections list request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnCollectionsListRequest() *hook.Hook[*CollectionsListEvent]
	// OnCollectionViewRequest hook is triggered on each API Collection view request.
	//
	// Could be used to validate or modify the response before returning it to the client.
	OnCollectionViewRequest() *hook.Hook[*CollectionViewEvent]
	// OnCollectionBeforeCreateRequest hook is triggered before each API Collection
	// create request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnCollectionBeforeCreateRequest() *hook.Hook[*CollectionCreateEvent]
	// OnCollectionAfterCreateRequest hook is triggered after each
	// successful API Collection create request.
	OnCollectionAfterCreateRequest() *hook.Hook[*CollectionCreateEvent]
	// OnCollectionBeforeUpdateRequest hook is triggered before each API Collection
	// update request (after request data load and before model persistence).
	//
	// Could be used to additionally validate the request data or implement
	// completely different persistence behavior (returning hook.StopPropagation).
	OnCollectionBeforeUpdateRequest() *hook.Hook[*CollectionUpdateEvent]
	// OnCollectionAfterUpdateRequest hook is triggered after each
	// successful API Collection update request.
	OnCollectionAfterUpdateRequest() *hook.Hook[*CollectionUpdateEvent]
	// OnCollectionBeforeDeleteRequest hook is triggered before each API
	// Collection delete request (after model load and before actual deletion).
	//
	// Could be used to additionally validate the request data or implement
	// completely different delete behavior (returning hook.StopPropagation).
	OnCollectionBeforeDeleteRequest() *hook.Hook[*CollectionDeleteEvent]
	// OnCollectionAfterDeleteRequest hook is triggered after each
	// successful API Collection delete request.
	OnCollectionAfterDeleteRequest() *hook.Hook[*CollectionDeleteEvent]
}
    App defines the main PocketBase app interface.
type AuthProviderConfig ¶
type AuthProviderConfig struct {
	Enabled            bool   `form:"enabled" json:"enabled"`
	AllowRegistrations bool   `form:"allowRegistrations" json:"allowRegistrations"`
	ClientId           string `form:"clientId" json:"clientId,omitempty"`
	ClientSecret       string `form:"clientSecret" json:"clientSecret,omitempty"`
	AuthUrl            string `form:"authUrl" json:"authUrl,omitempty"`
	TokenUrl           string `form:"tokenUrl" json:"tokenUrl,omitempty"`
	UserApiUrl         string `form:"userApiUrl" json:"userApiUrl,omitempty"`
}
    func (AuthProviderConfig) SetupProvider ¶
func (c AuthProviderConfig) SetupProvider(provider auth.Provider) error
SetupProvider loads the current AuthProviderConfig into the specified provider.
func (AuthProviderConfig) Validate ¶
func (c AuthProviderConfig) Validate() error
Validate makes `ProviderConfig` validatable by implementing validation.Validatable interface.
type BaseApp ¶
type BaseApp struct {
	// contains filtered or unexported fields
}
    BaseApp implements core.App and defines the base PocketBase app structure.
func NewBaseApp ¶
NewBaseApp creates and returns a new BaseApp instance configured with the provided arguments.
To initialize the app, you need to call `app.Bootsrap()`.
func (*BaseApp) Bootstrap ¶
Bootstrap initializes the application (aka. create data dir, open db connections, load settings, etc.)
func (*BaseApp) EncryptionEnv ¶
EncryptionEnv returns the name of the app secret env key (used for settings encryption).
func (*BaseApp) IsDebug ¶
IsDebug returns whether the app is in debug mode (showing more detailed error logs, executed sql statements, etc.).
func (*BaseApp) NewFilesystem ¶
func (app *BaseApp) NewFilesystem() (*filesystem.System, error)
NewFilesystem creates a new local or S3 filesystem instance based on the current app settings.
NB! Make sure to call `Close()` on the returned result after you are done working with it.
func (*BaseApp) NewMailClient ¶
NewMailClient creates and returns a new SMTP or Sendmail client based on the current app settings.
func (*BaseApp) OnAdminAfterCreateRequest ¶
func (app *BaseApp) OnAdminAfterCreateRequest() *hook.Hook[*AdminCreateEvent]
func (*BaseApp) OnAdminAfterDeleteRequest ¶
func (app *BaseApp) OnAdminAfterDeleteRequest() *hook.Hook[*AdminDeleteEvent]
func (*BaseApp) OnAdminAfterUpdateRequest ¶
func (app *BaseApp) OnAdminAfterUpdateRequest() *hook.Hook[*AdminUpdateEvent]
func (*BaseApp) OnAdminAuthRequest ¶
func (app *BaseApp) OnAdminAuthRequest() *hook.Hook[*AdminAuthEvent]
func (*BaseApp) OnAdminBeforeCreateRequest ¶
func (app *BaseApp) OnAdminBeforeCreateRequest() *hook.Hook[*AdminCreateEvent]
func (*BaseApp) OnAdminBeforeDeleteRequest ¶
func (app *BaseApp) OnAdminBeforeDeleteRequest() *hook.Hook[*AdminDeleteEvent]
func (*BaseApp) OnAdminBeforeUpdateRequest ¶
func (app *BaseApp) OnAdminBeforeUpdateRequest() *hook.Hook[*AdminUpdateEvent]
func (*BaseApp) OnAdminViewRequest ¶
func (app *BaseApp) OnAdminViewRequest() *hook.Hook[*AdminViewEvent]
func (*BaseApp) OnAdminsListRequest ¶
func (app *BaseApp) OnAdminsListRequest() *hook.Hook[*AdminsListEvent]
func (*BaseApp) OnBeforeServe ¶
func (app *BaseApp) OnBeforeServe() *hook.Hook[*ServeEvent]
func (*BaseApp) OnCollectionAfterCreateRequest ¶
func (app *BaseApp) OnCollectionAfterCreateRequest() *hook.Hook[*CollectionCreateEvent]
func (*BaseApp) OnCollectionAfterDeleteRequest ¶
func (app *BaseApp) OnCollectionAfterDeleteRequest() *hook.Hook[*CollectionDeleteEvent]
func (*BaseApp) OnCollectionAfterUpdateRequest ¶
func (app *BaseApp) OnCollectionAfterUpdateRequest() *hook.Hook[*CollectionUpdateEvent]
func (*BaseApp) OnCollectionBeforeCreateRequest ¶
func (app *BaseApp) OnCollectionBeforeCreateRequest() *hook.Hook[*CollectionCreateEvent]
func (*BaseApp) OnCollectionBeforeDeleteRequest ¶
func (app *BaseApp) OnCollectionBeforeDeleteRequest() *hook.Hook[*CollectionDeleteEvent]
func (*BaseApp) OnCollectionBeforeUpdateRequest ¶
func (app *BaseApp) OnCollectionBeforeUpdateRequest() *hook.Hook[*CollectionUpdateEvent]
func (*BaseApp) OnCollectionViewRequest ¶
func (app *BaseApp) OnCollectionViewRequest() *hook.Hook[*CollectionViewEvent]
func (*BaseApp) OnCollectionsListRequest ¶
func (app *BaseApp) OnCollectionsListRequest() *hook.Hook[*CollectionsListEvent]
func (*BaseApp) OnFileDownloadRequest ¶
func (app *BaseApp) OnFileDownloadRequest() *hook.Hook[*FileDownloadEvent]
func (*BaseApp) OnMailerAfterAdminResetPasswordSend ¶
func (app *BaseApp) OnMailerAfterAdminResetPasswordSend() *hook.Hook[*MailerAdminEvent]
func (*BaseApp) OnMailerAfterUserChangeEmailSend ¶
func (app *BaseApp) OnMailerAfterUserChangeEmailSend() *hook.Hook[*MailerUserEvent]
func (*BaseApp) OnMailerAfterUserResetPasswordSend ¶
func (app *BaseApp) OnMailerAfterUserResetPasswordSend() *hook.Hook[*MailerUserEvent]
func (*BaseApp) OnMailerAfterUserVerificationSend ¶
func (app *BaseApp) OnMailerAfterUserVerificationSend() *hook.Hook[*MailerUserEvent]
func (*BaseApp) OnMailerBeforeAdminResetPasswordSend ¶
func (app *BaseApp) OnMailerBeforeAdminResetPasswordSend() *hook.Hook[*MailerAdminEvent]
func (*BaseApp) OnMailerBeforeUserChangeEmailSend ¶
func (app *BaseApp) OnMailerBeforeUserChangeEmailSend() *hook.Hook[*MailerUserEvent]
func (*BaseApp) OnMailerBeforeUserResetPasswordSend ¶
func (app *BaseApp) OnMailerBeforeUserResetPasswordSend() *hook.Hook[*MailerUserEvent]
func (*BaseApp) OnMailerBeforeUserVerificationSend ¶
func (app *BaseApp) OnMailerBeforeUserVerificationSend() *hook.Hook[*MailerUserEvent]
func (*BaseApp) OnModelAfterCreate ¶
func (app *BaseApp) OnModelAfterCreate() *hook.Hook[*ModelEvent]
func (*BaseApp) OnModelAfterDelete ¶
func (app *BaseApp) OnModelAfterDelete() *hook.Hook[*ModelEvent]
func (*BaseApp) OnModelAfterUpdate ¶
func (app *BaseApp) OnModelAfterUpdate() *hook.Hook[*ModelEvent]
func (*BaseApp) OnModelBeforeCreate ¶
func (app *BaseApp) OnModelBeforeCreate() *hook.Hook[*ModelEvent]
func (*BaseApp) OnModelBeforeDelete ¶
func (app *BaseApp) OnModelBeforeDelete() *hook.Hook[*ModelEvent]
func (*BaseApp) OnModelBeforeUpdate ¶
func (app *BaseApp) OnModelBeforeUpdate() *hook.Hook[*ModelEvent]
func (*BaseApp) OnRealtimeAfterSubscribeRequest ¶
func (app *BaseApp) OnRealtimeAfterSubscribeRequest() *hook.Hook[*RealtimeSubscribeEvent]
func (*BaseApp) OnRealtimeBeforeSubscribeRequest ¶
func (app *BaseApp) OnRealtimeBeforeSubscribeRequest() *hook.Hook[*RealtimeSubscribeEvent]
func (*BaseApp) OnRealtimeConnectRequest ¶
func (app *BaseApp) OnRealtimeConnectRequest() *hook.Hook[*RealtimeConnectEvent]
func (*BaseApp) OnRecordAfterCreateRequest ¶
func (app *BaseApp) OnRecordAfterCreateRequest() *hook.Hook[*RecordCreateEvent]
func (*BaseApp) OnRecordAfterDeleteRequest ¶
func (app *BaseApp) OnRecordAfterDeleteRequest() *hook.Hook[*RecordDeleteEvent]
func (*BaseApp) OnRecordAfterUpdateRequest ¶
func (app *BaseApp) OnRecordAfterUpdateRequest() *hook.Hook[*RecordUpdateEvent]
func (*BaseApp) OnRecordBeforeCreateRequest ¶
func (app *BaseApp) OnRecordBeforeCreateRequest() *hook.Hook[*RecordCreateEvent]
func (*BaseApp) OnRecordBeforeDeleteRequest ¶
func (app *BaseApp) OnRecordBeforeDeleteRequest() *hook.Hook[*RecordDeleteEvent]
func (*BaseApp) OnRecordBeforeUpdateRequest ¶
func (app *BaseApp) OnRecordBeforeUpdateRequest() *hook.Hook[*RecordUpdateEvent]
func (*BaseApp) OnRecordViewRequest ¶
func (app *BaseApp) OnRecordViewRequest() *hook.Hook[*RecordViewEvent]
func (*BaseApp) OnRecordsListRequest ¶
func (app *BaseApp) OnRecordsListRequest() *hook.Hook[*RecordsListEvent]
func (*BaseApp) OnSettingsAfterUpdateRequest ¶
func (app *BaseApp) OnSettingsAfterUpdateRequest() *hook.Hook[*SettingsUpdateEvent]
func (*BaseApp) OnSettingsBeforeUpdateRequest ¶
func (app *BaseApp) OnSettingsBeforeUpdateRequest() *hook.Hook[*SettingsUpdateEvent]
func (*BaseApp) OnSettingsListRequest ¶
func (app *BaseApp) OnSettingsListRequest() *hook.Hook[*SettingsListEvent]
func (*BaseApp) OnUserAfterCreateRequest ¶
func (app *BaseApp) OnUserAfterCreateRequest() *hook.Hook[*UserCreateEvent]
func (*BaseApp) OnUserAfterDeleteRequest ¶
func (app *BaseApp) OnUserAfterDeleteRequest() *hook.Hook[*UserDeleteEvent]
func (*BaseApp) OnUserAfterOauth2Register ¶
func (app *BaseApp) OnUserAfterOauth2Register() *hook.Hook[*UserOauth2RegisterEvent]
func (*BaseApp) OnUserAfterUpdateRequest ¶
func (app *BaseApp) OnUserAfterUpdateRequest() *hook.Hook[*UserUpdateEvent]
func (*BaseApp) OnUserAuthRequest ¶
func (app *BaseApp) OnUserAuthRequest() *hook.Hook[*UserAuthEvent]
func (*BaseApp) OnUserBeforeCreateRequest ¶
func (app *BaseApp) OnUserBeforeCreateRequest() *hook.Hook[*UserCreateEvent]
func (*BaseApp) OnUserBeforeDeleteRequest ¶
func (app *BaseApp) OnUserBeforeDeleteRequest() *hook.Hook[*UserDeleteEvent]
func (*BaseApp) OnUserBeforeOauth2Register ¶
func (app *BaseApp) OnUserBeforeOauth2Register() *hook.Hook[*UserOauth2RegisterEvent]
func (*BaseApp) OnUserBeforeUpdateRequest ¶
func (app *BaseApp) OnUserBeforeUpdateRequest() *hook.Hook[*UserUpdateEvent]
func (*BaseApp) OnUserViewRequest ¶
func (app *BaseApp) OnUserViewRequest() *hook.Hook[*UserViewEvent]
func (*BaseApp) OnUsersListRequest ¶
func (app *BaseApp) OnUsersListRequest() *hook.Hook[*UsersListEvent]
func (*BaseApp) RefreshSettings ¶
RefreshSettings reinitializes and reloads the stored application settings.
func (*BaseApp) ResetBootstrapState ¶
ResetBootstrapState takes care for releasing initialized app resources (eg. closing db connections).
func (*BaseApp) SubscriptionsBroker ¶
func (app *BaseApp) SubscriptionsBroker() *subscriptions.Broker
SubscriptionsBroker returns the app realtime subscriptions broker instance.
type CollectionCreateEvent ¶
type CollectionCreateEvent struct {
	HttpContext echo.Context
	Collection  *models.Collection
}
    type CollectionDeleteEvent ¶
type CollectionDeleteEvent struct {
	HttpContext echo.Context
	Collection  *models.Collection
}
    type CollectionUpdateEvent ¶
type CollectionUpdateEvent struct {
	HttpContext echo.Context
	Collection  *models.Collection
}
    type CollectionViewEvent ¶
type CollectionViewEvent struct {
	HttpContext echo.Context
	Collection  *models.Collection
}
    type CollectionsListEvent ¶
type CollectionsListEvent struct {
	HttpContext echo.Context
	Collections []*models.Collection
	Result      *search.Result
}
    type EmailAuthConfig ¶
type EmailAuthConfig struct {
	Enabled           bool     `form:"enabled" json:"enabled"`
	ExceptDomains     []string `form:"exceptDomains" json:"exceptDomains"`
	OnlyDomains       []string `form:"onlyDomains" json:"onlyDomains"`
	MinPasswordLength int      `form:"minPasswordLength" json:"minPasswordLength"`
}
    func (EmailAuthConfig) Validate ¶
func (c EmailAuthConfig) Validate() error
Validate makes `EmailAuthConfig` validatable by implementing validation.Validatable interface.
type FileDownloadEvent ¶
type FileDownloadEvent struct {
	HttpContext echo.Context
	Collection  *models.Collection
	Record      *models.Record
	FileField   *schema.SchemaField
	ServedPath  string
	ServedName  string
}
    type LogsConfig ¶
type LogsConfig struct {
	MaxDays int `form:"maxDays" json:"maxDays"`
}
    func (LogsConfig) Validate ¶
func (c LogsConfig) Validate() error
Validate makes LogsConfig validatable by implementing validation.Validatable interface.
type MailerAdminEvent ¶
type MailerUserEvent ¶
type MetaConfig ¶
type MetaConfig struct {
	AppName                   string `form:"appName" json:"appName"`
	AppUrl                    string `form:"appUrl" json:"appUrl"`
	SenderName                string `form:"senderName" json:"senderName"`
	SenderAddress             string `form:"senderAddress" json:"senderAddress"`
	UserVerificationUrl       string `form:"userVerificationUrl" json:"userVerificationUrl"`
	UserResetPasswordUrl      string `form:"userResetPasswordUrl" json:"userResetPasswordUrl"`
	UserConfirmEmailChangeUrl string `form:"userConfirmEmailChangeUrl" json:"userConfirmEmailChangeUrl"`
}
    func (MetaConfig) Validate ¶
func (c MetaConfig) Validate() error
Validate makes MetaConfig validatable by implementing validation.Validatable interface.
type RealtimeConnectEvent ¶
type RealtimeConnectEvent struct {
	HttpContext echo.Context
	Client      subscriptions.Client
}
    type RealtimeSubscribeEvent ¶
type RealtimeSubscribeEvent struct {
	HttpContext   echo.Context
	Client        subscriptions.Client
	Subscriptions []string
}
    type RecordCreateEvent ¶
type RecordDeleteEvent ¶
type RecordUpdateEvent ¶
type RecordViewEvent ¶
type RecordsListEvent ¶
type S3Config ¶
type S3Config struct {
	Enabled   bool   `form:"enabled" json:"enabled"`
	Bucket    string `form:"bucket" json:"bucket"`
	Region    string `form:"region" json:"region"`
	Endpoint  string `form:"endpoint" json:"endpoint"`
	AccessKey string `form:"accessKey" json:"accessKey"`
	Secret    string `form:"secret" json:"secret"`
}
    func (S3Config) Validate ¶
Validate makes S3Config validatable by implementing validation.Validatable interface.
type ServeEvent ¶
type ServeEvent struct {
	App    App
	Router *echo.Echo
}
    type Settings ¶
type Settings struct {
	Meta                    MetaConfig         `form:"meta" json:"meta"`
	Logs                    LogsConfig         `form:"logs" json:"logs"`
	Smtp                    SmtpConfig         `form:"smtp" json:"smtp"`
	S3                      S3Config           `form:"s3" json:"s3"`
	AdminAuthToken          TokenConfig        `form:"adminAuthToken" json:"adminAuthToken"`
	AdminPasswordResetToken TokenConfig        `form:"adminPasswordResetToken" json:"adminPasswordResetToken"`
	UserAuthToken           TokenConfig        `form:"userAuthToken" json:"userAuthToken"`
	UserPasswordResetToken  TokenConfig        `form:"userPasswordResetToken" json:"userPasswordResetToken"`
	UserEmailChangeToken    TokenConfig        `form:"userEmailChangeToken" json:"userEmailChangeToken"`
	UserVerificationToken   TokenConfig        `form:"userVerificationToken" json:"userVerificationToken"`
	EmailAuth               EmailAuthConfig    `form:"emailAuth" json:"emailAuth"`
	GoogleAuth              AuthProviderConfig `form:"googleAuth" json:"googleAuth"`
	FacebookAuth            AuthProviderConfig `form:"facebookAuth" json:"facebookAuth"`
	GithubAuth              AuthProviderConfig `form:"githubAuth" json:"githubAuth"`
	GitlabAuth              AuthProviderConfig `form:"gitlabAuth" json:"gitlabAuth"`
	// contains filtered or unexported fields
}
    Settings defines common app configuration options.
func NewSettings ¶
func NewSettings() *Settings
NewSettings creates and returns a new default Settings instance.
func (*Settings) NamedAuthProviderConfigs ¶
func (s *Settings) NamedAuthProviderConfigs() map[string]AuthProviderConfig
NamedAuthProviderConfigs returns a map with all registered OAuth2 provider configurations (indexed by their name identifier).
func (*Settings) RedactClone ¶
RedactClone creates a new deep copy of the current settings, while replacing the secret values with `******`.
func (*Settings) Validate ¶
Validate makes Settings validatable by implementing validation.Validatable interface.
type SettingsListEvent ¶
type SettingsListEvent struct {
	HttpContext      echo.Context
	RedactedSettings *Settings
}
    type SettingsUpdateEvent ¶
type SmtpConfig ¶
type SmtpConfig struct {
	Enabled  bool   `form:"enabled" json:"enabled"`
	Host     string `form:"host" json:"host"`
	Port     int    `form:"port" json:"port"`
	Username string `form:"username" json:"username"`
	Password string `form:"password" json:"password"`
	// Whether to enforce TLS encryption for the mail server connection.
	//
	// When set to false StartTLS command is send, leaving the server
	// to decide whether to upgrade the connection or not.
	Tls bool `form:"tls" json:"tls"`
}
    func (SmtpConfig) Validate ¶
func (c SmtpConfig) Validate() error
Validate makes SmtpConfig validatable by implementing validation.Validatable interface.
type TokenConfig ¶
type TokenConfig struct {
	Secret   string `form:"secret" json:"secret"`
	Duration int64  `form:"duration" json:"duration"`
}
    func (TokenConfig) Validate ¶
func (c TokenConfig) Validate() error
Validate makes TokenConfig validatable by implementing validation.Validatable interface.