Browse Source

refactor to separate services

Pi 3 months ago
parent
commit
5e7babbb65
52 changed files with 111 additions and 34 deletions
  1. 6 0
      config/clip.json
  2. 6 0
      config/code.json
  3. 6 0
      config/goto.json
  4. 0 0
      config/migrations/000_clip.sql
  5. 0 0
      config/migrations/001_goto.sql
  6. 0 0
      config/migrations/003_upload.sql
  7. 0 0
      config/migrations/004_upload.sql
  8. 0 0
      config/migrations/005_upload.sql
  9. 0 0
      config/migrations/006_code.sql
  10. 0 0
      config/migrations/007_code_detail.sql
  11. 0 0
      config/migrations/008_upload_temp.sql
  12. 0 0
      config/migrations/009_goto.sql
  13. 0 0
      config/templates/loader-start.handlebars
  14. 0 0
      config/templates/loader-stop.handlebars
  15. 0 0
      config/templates/progress.handlebars
  16. 0 0
      config/templates/spinner-start.handlebars
  17. 0 0
      config/templates/spinner-stop.handlebars
  18. 2 1
      config/upload.json
  19. 69 11
      docker-compose.yml
  20. 0 0
      site/clip/Index.sql
  21. 1 1
      site/clip/form.sql
  22. 1 1
      site/clip/index.sql
  23. 0 0
      site/clip/save.sql
  24. 4 4
      site/code/Index.sql
  25. 2 2
      site/code/form-fuel.sql
  26. 1 1
      site/code/form.sql
  27. 1 1
      site/code/index.sql
  28. 0 0
      site/code/json/filters.json
  29. 0 0
      site/code/new.sql
  30. 1 1
      site/code/recent.sql
  31. 1 1
      site/code/save.sql
  32. 0 0
      site/code/update.sql
  33. 0 0
      site/goto/Index.sql
  34. 2 2
      site/goto/form.sql
  35. 2 2
      site/goto/index.sql
  36. 0 0
      site/goto/preview.sql
  37. 0 0
      site/goto/redirect.sql
  38. 0 0
      site/goto/save.sql
  39. 1 1
      site/shared/Link.sql
  40. 0 0
      site/shared/Open.sql
  41. 0 0
      site/shared/QR.sql
  42. 0 0
      site/shared/Style.sql
  43. 0 0
      site/shared/alert.sql
  44. 0 0
      site/shared/link.sql
  45. 1 1
      site/shared/save.sql
  46. 0 0
      site/shared/theme.sql
  47. 1 1
      site/shared/validate.sql
  48. 0 0
      site/upload/Index.sql
  49. 1 1
      site/upload/form.sql
  50. 2 2
      site/upload/index.sql
  51. 0 0
      site/upload/save.sql
  52. 0 0
      site/upload/temp.sql

+ 6 - 0
config/clip.json

@@ -0,0 +1,6 @@
+{
+  "site_prefix": "/clip",
+  "max_database_pool_connections": 16,
+  "database_url": "sqlite:///var/sqlpage/clip.db",
+  "compress_responses": false
+}

+ 6 - 0
config/code.json

@@ -0,0 +1,6 @@
+{
+  "site_prefix": "/code",
+  "max_database_pool_connections": 16,
+  "database_url": "sqlite:///var/sqlpage/code.db",
+  "compress_responses": false
+}

+ 6 - 0
config/goto.json

@@ -0,0 +1,6 @@
+{
+  "site_prefix": "/goto",
+  "max_database_pool_connections": 16,
+  "database_url": "sqlite:///var/sqlpage/goto.db",
+  "compress_responses": false
+}

+ 0 - 0
util-sqlpage/sqlpage/migrations/000_clip.sql → config/migrations/000_clip.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/001_goto.sql → config/migrations/001_goto.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/003_upload.sql → config/migrations/003_upload.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/004_upload.sql → config/migrations/004_upload.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/005_upload.sql → config/migrations/005_upload.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/006_code.sql → config/migrations/006_code.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/007_code_detail.sql → config/migrations/007_code_detail.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/008_upload_temp.sql → config/migrations/008_upload_temp.sql


+ 0 - 0
util-sqlpage/sqlpage/migrations/009_goto.sql → config/migrations/009_goto.sql


+ 0 - 0
util-sqlpage/sqlpage/templates/loader-start.handlebars → config/templates/loader-start.handlebars


+ 0 - 0
util-sqlpage/sqlpage/templates/loader-stop.handlebars → config/templates/loader-stop.handlebars


+ 0 - 0
util-sqlpage/sqlpage/templates/progress.handlebars → config/templates/progress.handlebars


+ 0 - 0
util-sqlpage/sqlpage/templates/spinner-start.handlebars → config/templates/spinner-start.handlebars


+ 0 - 0
util-sqlpage/sqlpage/templates/spinner-stop.handlebars → config/templates/spinner-stop.handlebars


+ 2 - 1
util-sqlpage/sqlpage/sqlpage.json → config/upload.json

@@ -1,6 +1,7 @@
 {
+  "site_prefix": "/upload",
   "max_uploaded_file_size": 5242880000,
   "max_database_pool_connections": 16,
-  "database_url": "sqlite://./util.db",
+  "database_url": "sqlite:///var/sqlpage/upload.db",
   "compress_responses": false
 }

+ 69 - 11
docker-compose.yml

@@ -1,24 +1,82 @@
 ---
-x-podman:
-  in_pod: false
-
 services:
-  web:
+  clip:
+    image: docker.io/lovasoa/sqlpage:latest
+    hostname: clip
+    user: root
+    volumes:
+      - /etc/timezone:/etc/timezone:ro
+      - /etc/localtime:/etc/localtime:ro
+      - ./site/clip:/var/www
+      - ./site/shared:/var/www/sqlpage
+      - ./config/migrations:/etc/sqlpage/migrations
+      - ./config/templates:/etc/sqlpage/templates
+      - ./config/clip.json:/etc/sqlpage/sqlpage.json
+      - ./data/clip.db:/var/sqlpage/clip.db
+    expose:
+      - 8080
+    networks:
+      - priv
+    restart: unless-stopped
+
+  goto:
+    image: docker.io/lovasoa/sqlpage:latest
+    hostname: goto
+    user: root
+    volumes:
+      - /etc/timezone:/etc/timezone:ro
+      - /etc/localtime:/etc/localtime:ro
+      - ./site/goto:/var/www
+      - ./site/shared:/var/www/sqlpage
+      - ./config/migrations:/etc/sqlpage/migrations
+      - ./config/templates:/etc/sqlpage/templates
+      - ./config/goto.json:/etc/sqlpage/sqlpage.json
+      - ./data/goto.db:/var/sqlpage/goto.db
+    expose:
+      - 8080
+    networks:
+      - priv
+    restart: unless-stopped
+
+  upload:
+    image: docker.io/lovasoa/sqlpage:latest
+    hostname: upload
+    user: root
+    volumes:
+      - /etc/timezone:/etc/timezone:ro
+      - /etc/localtime:/etc/localtime:ro
+      - ./site/upload:/var/www
+      - ./site/shared:/var/www/sqlpage
+      - ./config/migrations:/etc/sqlpage/migrations
+      - ./config/templates:/etc/sqlpage/templates
+      - ./config/upload.json:/etc/sqlpage/sqlpage.json
+      - ./data/upload.db:/var/sqlpage/upload.db
+    expose:
+      - 8080
+    networks:
+      - priv
+    restart: unless-stopped
+
+  code:
     image: docker.io/lovasoa/sqlpage:latest
-    hostname: util-web
-    user: "1000:1000"
-    userns_mode: "keep-id:uid=1000,gid=1000"
+    hostname: code
+    user: root
     volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
-      - ./util-sqlpage/:/var/www/
-      - ./util-sqlpage/sqlpage:/etc/sqlpage:ro
+      - ./site/code:/var/www
+      - ./site/shared:/var/www/sqlpage
+      - ./config/migrations:/etc/sqlpage/migrations
+      - ./config/templates:/etc/sqlpage/templates
+      - ./config/code.json:/etc/sqlpage/sqlpage.json
+      - ./data/code.db:/var/sqlpage/code.db
     expose:
       - 8080
     networks:
       - priv
     restart: unless-stopped
 
+
   proxy:
     image: util-pyapi
     hostname: util-proxy
@@ -26,7 +84,7 @@ services:
       context: .
       dockerfile: rest/Dockerfile
     volumes:
-      - ./util-sqlpage/util.db:/usr/src/app/util.db:ro
+      - ./data/upload.db:/usr/src/app/util.db:ro
     expose:
       - 6772
     networks:
@@ -38,4 +96,4 @@ networks:
     enable_ipv6: true
     ipam:
       config:
-       - subnet: fd00:0005::/64
+       - subnet: fd00:0010::/64

+ 0 - 0
util-sqlpage/clip/Index.sql → site/clip/Index.sql


+ 1 - 1
util-sqlpage/clip/form.sql → site/clip/form.sql

@@ -7,7 +7,7 @@ SELECT 'Open' AS title
 SELECT 'New' AS title
 , 1 AS width
 , 'gray-500' AS color
-, '/clip' AS link
+, '/clip/' AS link
 ;
 
 SELECT 'form' AS component

+ 1 - 1
util-sqlpage/clip/index.sql → site/clip/index.sql

@@ -10,7 +10,7 @@ SET ":manifest" = '/static/clip/manifest.json';
 SET ":action" = COALESCE(:action, $action, '');
 SET ":inner" = (CASE :action
   WHEN 'open' THEN 'sqlpage/Open.sql'
-  ELSE 'clip/Index.sql'
+  ELSE 'Index.sql'
 END);
 SET ":spinner" = COALESCE(:content,'') <> '' AND COALESCE(:action, '') = 'Paste';
 SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/theme.sql') AS properties;

+ 0 - 0
util-sqlpage/clip/save.sql → site/clip/save.sql


+ 4 - 4
util-sqlpage/code/Index.sql → site/code/Index.sql

@@ -1,11 +1,11 @@
 SET ":inner" = CASE :has_post_params
   WHEN 1 THEN CASE COALESCE(:hash, '')
-    WHEN '' THEN 'code/save.sql'
-    ELSE 'code/form-fuel.sql'
+    WHEN '' THEN 'save.sql'
+    ELSE 'form-fuel.sql'
   END
   ELSE CASE COALESCE(:hash, '')
-    WHEN '' THEN 'code/recent.sql'
-    ELSE 'code/form-fuel.sql'
+    WHEN '' THEN 'recent.sql'
+    ELSE 'form-fuel.sql'
   END
 END;
 SELECT 'dynamic' AS component, sqlpage.run_sql(:inner) AS properties;

+ 2 - 2
util-sqlpage/code/form-fuel.sql → site/code/form-fuel.sql

@@ -29,8 +29,8 @@ SET ":filter_config" = '[
 ]';
 
 SET ":inner" = CASE COALESCE(:action, '')
-  WHEN 'Update' THEN 'code/update.sql'
-  ELSE 'code/form.sql'
+  WHEN 'Update' THEN 'update.sql'
+  ELSE 'form.sql'
 END;
 SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/theme.sql') AS properties
 WHERE COALESCE(:action, '') <> 'Update';

+ 1 - 1
util-sqlpage/code/form.sql → site/code/form.sql

@@ -49,7 +49,7 @@ SELECT COALESCE(c.v->>'name', j.v->>'name') AS name
   END AS checked
 , j.v->>'formaction'
 , COALESCE(c.v->>'required', j.v->>'required') AS required
-FROM (SELECT value v FROM json_each(sqlpage.read_file_as_text('code/json/filters.json'))) j
+FROM (SELECT value v FROM json_each(sqlpage.read_file_as_text('json/filters.json'))) j
 FULL JOIN (SELECT value v FROM json_each(:filter_config)) c
 ON (j.v->>'name' = c.v->>'name')
 LEFT JOIN (SELECT value j FROM json_each(:filter_options)) o

+ 1 - 1
util-sqlpage/code/index.sql → site/code/index.sql

@@ -13,4 +13,4 @@ SET ":tabler_color" = 'azure';
 SET ":image" = '/static/code/qr.svg';
 SET ":favicon" = :image;
 --SET ":manifest" = '/static/upload/manifest.json';
-SELECT 'dynamic' AS component, sqlpage.run_sql('code/Index.sql') AS properties;
+SELECT 'dynamic' AS component, sqlpage.run_sql('Index.sql') AS properties;

+ 0 - 0
util-sqlpage/code/json/filters.json → site/code/json/filters.json


+ 0 - 0
util-sqlpage/code/new.sql → site/code/new.sql


+ 1 - 1
util-sqlpage/code/recent.sql → site/code/recent.sql

@@ -24,7 +24,7 @@ SET ":validate" = 'Apply';
 SET ":action" = 'Apply';
 SET ":method" = 'get';
 SET ":autofill" = FALSE;
-SELECT 'dynamic' AS component, sqlpage.run_sql('code/form.sql') AS properties;
+SELECT 'dynamic' AS component, sqlpage.run_sql('form.sql') AS properties;
 
 SELECT 'list' AS component;
 SELECT COALESCE(type||' ','') || COALESCE(store||' ', '') || COALESCE(expiry, created) AS title

+ 1 - 1
util-sqlpage/code/save.sql → site/code/save.sql

@@ -9,4 +9,4 @@ SET ":request" = json_object(
 SET ":meta" = sqlpage.fetch(:request);
 SET ":hash" = :meta->>'hash';
 SET ":preview" = :meta->>'preview';
-SELECT 'dynamic' AS component, sqlpage.run_sql('code/new.sql') AS properties;
+SELECT 'dynamic' AS component, sqlpage.run_sql('new.sql') AS properties;

+ 0 - 0
util-sqlpage/code/update.sql → site/code/update.sql


+ 0 - 0
util-sqlpage/goto/Index.sql → site/goto/Index.sql


+ 2 - 2
util-sqlpage/goto/form.sql → site/goto/form.sql

@@ -7,7 +7,7 @@ SELECT 'Open' AS title
 SELECT 'New' AS title
 , 1 AS width
 , 'gray-500' AS color
-, '/goto' AS link
+, '/goto/' AS link
 ;
 
 SELECT 'form' AS component
@@ -31,6 +31,6 @@ SELECT 'content' AS name
 WHERE NOT :view
 ;
 
-SELECT 'dynamic' AS component, sqlpage.run_sql('goto/preview.sql') AS properties
+SELECT 'dynamic' AS component, sqlpage.run_sql('preview.sql') AS properties
 WHERE :content <> ''
 ;

+ 2 - 2
util-sqlpage/goto/index.sql → site/goto/index.sql

@@ -11,9 +11,9 @@ SET ":manifest" = '/static/goto/manifest.json';
 SET ":action" = COALESCE($action, :action, '');
 SET ":inner" = (CASE :action
   WHEN 'open' THEN 'sqlpage/Open.sql'
-  ELSE 'goto/Index.sql'
+  ELSE 'Index.sql'
 END);
-SELECT 'dynamic' AS component, sqlpage.run_sql('goto/redirect.sql') AS properties
+SELECT 'dynamic' AS component, sqlpage.run_sql('redirect.sql') AS properties
 WHERE (:go = 'true' AND :hash <> '');
 
 SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/theme.sql') AS properties;

+ 0 - 0
util-sqlpage/goto/preview.sql → site/goto/preview.sql


+ 0 - 0
util-sqlpage/goto/redirect.sql → site/goto/redirect.sql


+ 0 - 0
util-sqlpage/goto/save.sql → site/goto/save.sql


+ 1 - 1
util-sqlpage/sqlpage/Link.sql → site/shared/Link.sql

@@ -16,7 +16,7 @@ SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/QR.sql') AS properties
 WHERE COALESCE (:hash, '') = '';
 
 SET ":inner" = CASE COALESCE(:hash, '')
-  WHEN '' THEN :tool||'/form.sql'
+  WHEN '' THEN 'form.sql'
   ELSE 'sqlpage/validate.sql'
 END;
 SELECT 'dynamic' AS component, sqlpage.run_sql(:inner) AS properties;

+ 0 - 0
util-sqlpage/sqlpage/Open.sql → site/shared/Open.sql


+ 0 - 0
util-sqlpage/sqlpage/QR.sql → site/shared/QR.sql


+ 0 - 0
util-sqlpage/sqlpage/Style.sql → site/shared/Style.sql


+ 0 - 0
util-sqlpage/sqlpage/alert.sql → site/shared/alert.sql


+ 0 - 0
util-sqlpage/sqlpage/link.sql → site/shared/link.sql


+ 1 - 1
util-sqlpage/sqlpage/save.sql → site/shared/save.sql

@@ -14,4 +14,4 @@ SET ":meta" = json(sqlpage.fetch(:request));
 SET ":qr" = :meta->>'qr';
 SET ":hash" = :meta->>'hash';
 SET ":preview" = :meta->>'preview';
-SELECT 'dynamic' AS component, sqlpage.run_sql(:tool||'/save.sql') AS properties;
+SELECT 'dynamic' AS component, sqlpage.run_sql('save.sql') AS properties;

+ 0 - 0
util-sqlpage/sqlpage/theme.sql → site/shared/theme.sql


+ 1 - 1
util-sqlpage/sqlpage/validate.sql → site/shared/validate.sql

@@ -35,7 +35,7 @@ WHERE COALESCE (:hash, '') <> '';
 
 SET ":inner" = CASE COALESCE(:content,'')
   WHEN '' THEN 'sqlpage/alert.sql'
-  ELSE :tool||'/form.sql'
+  ELSE 'form.sql'
 END;
 
 SET ":icon" = 'error-404';

+ 0 - 0
util-sqlpage/upload/Index.sql → site/upload/Index.sql


+ 1 - 1
util-sqlpage/upload/form.sql → site/upload/form.sql

@@ -8,7 +8,7 @@ SELECT 'Open' AS title
 SELECT 'New' AS title
 , 1 AS width
 , 'gray-500' AS color
-, '/upload' AS link
+, '/upload/' AS link
 ;
 SELECT 'Download' AS title
 , 2 AS width

+ 2 - 2
util-sqlpage/upload/index.sql → site/upload/index.sql

@@ -10,7 +10,7 @@ SET ":manifest" = '/static/upload/manifest.json';
 SET ":action" = COALESCE($action, :action, '');
 SET ":inner" = (CASE :action
   WHEN 'open' THEN 'sqlpage/Open.sql'
-  ELSE 'upload/Index.sql'
+  ELSE 'Index.sql'
 END);
 SET ":file_name" = sqlpage.uploaded_file_name('content');
 SET ":mime_type" = sqlpage.uploaded_file_mime_type('content');
@@ -18,7 +18,7 @@ SET ":mime_type" = sqlpage.uploaded_file_mime_type('content');
 -- https://sql.ophir.dev/functions.sql?function=read_file_as_data_url#function
 SET ":content" = sqlpage.read_file_as_data_url(sqlpage.uploaded_file_path('content'));
 
-SELECT 'dynamic' AS component, sqlpage.run_sql('upload/temp.sql') AS properties
+SELECT 'dynamic' AS component, sqlpage.run_sql('temp.sql') AS properties
 WHERE :content IS NOT NULL AND $rowid IS NULL;
 
 SET ":file_name" = (SELECT name FROM upload_temp WHERE rowid = $rowid);

+ 0 - 0
util-sqlpage/upload/save.sql → site/upload/save.sql


+ 0 - 0
util-sqlpage/upload/temp.sql → site/upload/temp.sql