From d9b14adc8d2e9263eb6a343f148724665df1cf31 Mon Sep 17 00:00:00 2001
From: seriousm4x
Date: Mon, 14 Aug 2023 16:10:55 +0200
Subject: [PATCH] add lazy ping option
---
backend/cronjobs/cronjobs.go | 4 +-
.../1692020613_updated_settings_private.go | 48 +++++++++++++++++++
frontend/src/lib/types/settings.ts | 1 +
frontend/src/routes/settings/+page.svelte | 30 ++++++++++--
4 files changed, 78 insertions(+), 5 deletions(-)
create mode 100644 backend/migrations/1692020613_updated_settings_private.go
diff --git a/backend/cronjobs/cronjobs.go b/backend/cronjobs/cronjobs.go
index e59deea3..f7ec8751 100644
--- a/backend/cronjobs/cronjobs.go
+++ b/backend/cronjobs/cronjobs.go
@@ -21,9 +21,9 @@ func RunPing(app *pocketbase.PocketBase) {
// init cronjob
CronPing = cron.New()
CronPing.AddFunc(settingsPrivateRecords[0].GetString("interval"), func() {
- // skip cron if no realtime clients connected
+ // skip cron if no realtime clients connected and lazy_ping is turned on
realtimeClients := len(app.SubscriptionsBroker().Clients())
- if realtimeClients == 0 {
+ if realtimeClients == 0 && settingsPrivateRecords[0].GetBool("lazy_ping") {
return
}
// expand ports field
diff --git a/backend/migrations/1692020613_updated_settings_private.go b/backend/migrations/1692020613_updated_settings_private.go
new file mode 100644
index 00000000..190456cc
--- /dev/null
+++ b/backend/migrations/1692020613_updated_settings_private.go
@@ -0,0 +1,48 @@
+package migrations
+
+import (
+ "encoding/json"
+
+ "github.com/pocketbase/dbx"
+ "github.com/pocketbase/pocketbase/daos"
+ m "github.com/pocketbase/pocketbase/migrations"
+ "github.com/pocketbase/pocketbase/models/schema"
+)
+
+func init() {
+ m.Register(func(db dbx.Builder) error {
+ dao := daos.New(db);
+
+ collection, err := dao.FindCollectionByNameOrId("nmj3ko20gzkg8n3")
+ if err != nil {
+ return err
+ }
+
+ // add
+ new_lazy_ping := &schema.SchemaField{}
+ json.Unmarshal([]byte(`{
+ "system": false,
+ "id": "yjyq5pvg",
+ "name": "lazy_ping",
+ "type": "bool",
+ "required": false,
+ "unique": false,
+ "options": {}
+ }`), new_lazy_ping)
+ collection.Schema.AddField(new_lazy_ping)
+
+ return dao.SaveCollection(collection)
+ }, func(db dbx.Builder) error {
+ dao := daos.New(db);
+
+ collection, err := dao.FindCollectionByNameOrId("nmj3ko20gzkg8n3")
+ if err != nil {
+ return err
+ }
+
+ // remove
+ collection.Schema.RemoveField("yjyq5pvg")
+
+ return dao.SaveCollection(collection)
+ })
+}
diff --git a/frontend/src/lib/types/settings.ts b/frontend/src/lib/types/settings.ts
index 13f47d7d..46f5b3c8 100644
--- a/frontend/src/lib/types/settings.ts
+++ b/frontend/src/lib/types/settings.ts
@@ -9,5 +9,6 @@ export type SettingsPublic = Record & {
export type SettingsPrivate = Record & {
interval: number;
+ lazy_ping: boolean;
scan_range: string;
};
diff --git a/frontend/src/routes/settings/+page.svelte b/frontend/src/routes/settings/+page.svelte
index 5e99772d..d648245b 100644
--- a/frontend/src/routes/settings/+page.svelte
+++ b/frontend/src/routes/settings/+page.svelte
@@ -67,8 +67,17 @@
.collection('settings_public')
.update(settingsPubClone.id, settingsPubClone)
.then((res) => {
- toast.success('Saved settings');
settingsPub.set(res as SettingsPublic);
+ })
+ .catch((err) => {
+ toast.error(err.message);
+ });
+ await $pocketbase
+ .collection('settings_private')
+ .update(settingsPrivClone.id, settingsPrivClone)
+ .then((res) => {
+ toast.success('Saved settings');
+ settingsPriv.set(res as SettingsPrivate);
goto('/');
})
.catch((err) => {
@@ -90,7 +99,7 @@
class="badge">@every 3s.
-
+
Learn more about the correct syntax for cron on
Wikipedia
or refer to the
@@ -98,7 +107,7 @@
>package documentation.
-