Daniel Sheffield 4 mēneši atpakaļ
vecāks
revīzija
0eac8d155d

+ 0 - 47
util-sqlpage/clip/Open.sql

@@ -1,47 +0,0 @@
-SELECT 'text' AS component
-, '<style>
-.form-fieldset {
-    border: none;
-}
-.form-fieldset .row {
-    align-items: center;
-    justify-content: center;
-}
-input[name=hash] {
-    text-align: center;
-}
-</style>' AS html
-;
-SELECT 'button' AS component
-, 'center' AS justify
-, 'lg' AS size
-;
-SELECT 'New Clip' AS title
-, 2 AS width
-, $tabler_color AS color
-, '/clip.sql?' AS link
-;
-SELECT 'form' AS component
-, 'open-clip' AS id
-, '/clip.sql' AS action
-, '' AS validate
-, 'get' AS method
-;
-SELECT 'C0DE' AS placeholder
-, 'input' AS type
-, '' AS label
-, 'hash' AS name
-, 2 AS width
-, TRUE AS autofocus
-;
-SELECT 'button' AS component
-, 'center' AS justify
-, 'lg' AS size
-, 2 AS width
-;
-SELECT 'Submit' AS title
-, 1 AS width
-, 'gray-500' AS color
-, '/clip.sql?' AS link
-, 'open-clip' AS form
-;

+ 1 - 1
util-sqlpage/clip/open.sql

@@ -1,2 +1,2 @@
-SET inner = 'clip/Open.sql';
+SET inner = 'sqlpage/Open.sql';
 SELECT 'dynamic' AS component, sqlpage.run_sql('clip/entry.sql') AS properties;

+ 1 - 1
util-sqlpage/goto/form.sql

@@ -1,5 +1,5 @@
 SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/QR.sql') AS properties;
-SET view = COALESCE($content, '') <> '' AND COALESCE($action, '') <> ('Shrtn It!');
+SET view = COALESCE($content, '') <> '';
 SELECT 'button' AS component;
 SELECT 'Open' AS title
 , 1 AS width

+ 1 - 1
util-sqlpage/goto/open.sql

@@ -1,2 +1,2 @@
-SET inner = 'goto/Open.sql';
+SET inner = 'sqlpage/Open.sql';
 SELECT 'dynamic' AS component, sqlpage.run_sql('goto/entry.sql') AS properties;

+ 5 - 5
util-sqlpage/goto/Open.sql → util-sqlpage/sqlpage/Open.sql

@@ -19,11 +19,11 @@ SELECT 'button' AS component
 SELECT 'New GoTo' AS title
 , 2 AS width
 , $tabler_color AS color
-, '/goto.sql?' AS link
+, '/'||$tool||'.sql?' AS link
 ;
 SELECT 'form' AS component
-, 'open-goto' AS id
-, '/clip.sql' AS action
+, $tool||'-open' AS id
+, '/'||$tool||'.sql' AS action
 , '' AS validate
 , 'get' AS method
 ;
@@ -42,6 +42,6 @@ SELECT 'button' AS component
 SELECT 'Submit' AS title
 , 1 AS width
 , 'gray-500' AS color
-, '/goto.sql?' AS link
-, 'open-goto' AS form
+, '/'||$tool||'.sql?' AS link
+, $tool||'-open' AS form
 ;

+ 7 - 0
util-sqlpage/sqlpage/migrations/003_upload.sql

@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS upload;
+CREATE TABLE IF NOT EXISTS upload(
+  hash text PRIMARY KEY,
+  content BLOB,
+  qr text,
+  created timestamp
+);

+ 10 - 0
util-sqlpage/upload/Index.sql

@@ -0,0 +1,10 @@
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/Style.sql') AS properties;
+SET content = $upload;
+SET inner = CASE COALESCE($content,'') <> '' AND COALESCE($action, '') = 'Upload'
+  WHEN TRUE THEN 'upload/save.sql'
+  ELSE CASE $hash IS NULL
+    WHEN TRUE THEN 'sqlpage/Link.sql'
+    ELSE 'sqlpage/link.sql'
+  END
+END;
+SELECT 'dynamic' AS component, sqlpage.run_sql($inner) AS properties;

+ 5 - 0
util-sqlpage/upload/download.sql

@@ -0,0 +1,5 @@
+SET content = (SELECT content FROM clip WHERE hash = $hash);
+SELECT 'shell-empty' AS component;
+SELECT 'text' AS component
+, $content AS html
+;

+ 9 - 0
util-sqlpage/upload/entry.sql

@@ -0,0 +1,9 @@
+SET title = 'Upload';
+SET tool = 'upload';
+SET color = '#afaf0f';
+SET tabler_color = 'yellow';
+SET image = '/static/upload/upload-favicon_square.svg';
+SET favicon = $image;
+SET manifest = '/static/upload/manifest.json';
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/theme.sql') AS properties;
+SELECT 'dynamic' AS component, sqlpage.run_sql($inner) AS properties;

+ 42 - 0
util-sqlpage/upload/form.sql

@@ -0,0 +1,42 @@
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/QR.sql') AS properties;
+SET view = COALESCE($content, '') <> '';
+SELECT 'button' AS component;
+SELECT 'Open' AS title
+, 1 AS width
+, $tabler_color AS color
+, '/upload/open.sql?' AS link
+;
+SELECT 'New' AS title
+, 1 AS width
+, 'gray-500' AS color
+, 'https://shandan.one/upload.sql?' AS link
+;
+SELECT 'Download' AS title
+, 2 AS width
+, 'gray-500' AS color
+, 'https://shandan.one/upload/download.sql?hash='||$hash AS link
+;
+
+SELECT 'form' AS component
+, '/upload.sql' AS action
+, '' AS validate
+, 'post' AS method
+WHERE NOT $view
+;
+SELECT 'Upload' AS value
+, '' AS label
+, 1 AS width
+, 'submit' type
+, 'action' AS name
+WHERE NOT $view
+;
+SELECT 'content' AS name
+, CASE $view WHEN FALSE THEN 'type' ELSE 'hidden' END AS type
+, '' AS label
+--, $view AS disabled
+, CASE COALESCE($action, '')
+  WHEN 'New' THEN NULL
+  ELSE $content
+END AS value
+WHERE NOT $view
+;

+ 2 - 0
util-sqlpage/upload/open.sql

@@ -0,0 +1,2 @@
+SET inner = 'sqlpage/Open.sql';
+SELECT 'dynamic' AS component, sqlpage.run_sql('clip/entry.sql') AS properties;

+ 29 - 0
util-sqlpage/upload/save.sql

@@ -0,0 +1,29 @@
+SET request = json_object(
+    'method', 'POST',
+    'url', 'https://shandan.one/hash',
+    'headers', json_object(),
+    'body', json_object(
+        'data', $content,
+        'person', $tool
+    )
+);
+SET hash = sqlpage.fetch($request);
+SET fallback = 'https://shandan.one/upload/' || sqlpage.url_encode($hash);
+SET request = json_object(
+    'method', 'POST',
+    'url', 'https://shandan.one/qr',
+    'headers', json_object(),
+    'body', json_object(
+        'data', $content,
+        'fallback', $fallback
+    )
+);
+SET qr = sqlpage.fetch($request);
+INSERT INTO upload (hash, content, qr, created) VALUES ($hash, $content, $qr, CURRENT_TIMESTAMP)
+ON CONFLICT DO
+UPDATE SET
+  content = excluded.content,
+  created = excluded.created,
+  qr = excluded.qr
+WHERE excluded.created > clip.created;
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/link.sql') AS properties;