chore: import upstream snapshot with attribution
CI / compile_and_lint (push) Failing after 0s
CI / docker_build (linux/amd64, -linux-amd64-duckdb, duckdb) (push) Failing after 0s
CI / docker_build (linux/arm64, -linux-arm64, minimal) (push) Failing after 2s
CI / docker_build (linux/arm64, -linux-arm64-duckdb, duckdb) (push) Failing after 1s
CI / docker_build (linux/amd64, minimal) (push) Failing after 1s
CI / test (, sqlite, sqlite::memory:) (push) Has been skipped
CI / test (mssql, mssql, mssql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (mysql, mysql, mysql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (oracle, oracle, Driver=Oracle 21 ODBC driver;Dbq=//127.0.0.1:1521/FREEPDB1;Uid=root;Pwd=Password123!) (push) Has been skipped
CI / test (postgres, odbc, Driver=PostgreSQL Unicode;Server=127.0.0.1;Port=5432;Database=sqlpage;UID=root;PWD=Password123!, true) (push) Has been skipped
CI / test (postgres, postgres, postgres://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / playwright (push) Has been skipped
CI / docker_build (linux/arm/v7, -linux-arm-v7, minimal) (push) Failing after 0s
CI / hurl_examples (push) Failing after 8s
deploy website / deploy_official_site (push) Failing after 1s
CI / hurl (${{ matrix.example }}) (push) Has been skipped
CI / docker_push (duckdb) (push) Has been cancelled
CI / docker_push (minimal) (push) Has been cancelled
CI / windows_test (push) Has been cancelled
CI / compile_and_lint (push) Failing after 0s
CI / docker_build (linux/amd64, -linux-amd64-duckdb, duckdb) (push) Failing after 0s
CI / docker_build (linux/arm64, -linux-arm64, minimal) (push) Failing after 2s
CI / docker_build (linux/arm64, -linux-arm64-duckdb, duckdb) (push) Failing after 1s
CI / docker_build (linux/amd64, minimal) (push) Failing after 1s
CI / test (, sqlite, sqlite::memory:) (push) Has been skipped
CI / test (mssql, mssql, mssql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (mysql, mysql, mysql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (oracle, oracle, Driver=Oracle 21 ODBC driver;Dbq=//127.0.0.1:1521/FREEPDB1;Uid=root;Pwd=Password123!) (push) Has been skipped
CI / test (postgres, odbc, Driver=PostgreSQL Unicode;Server=127.0.0.1;Port=5432;Database=sqlpage;UID=root;PWD=Password123!, true) (push) Has been skipped
CI / test (postgres, postgres, postgres://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / playwright (push) Has been skipped
CI / docker_build (linux/arm/v7, -linux-arm-v7, minimal) (push) Failing after 0s
CI / hurl_examples (push) Failing after 8s
deploy website / deploy_official_site (push) Failing after 1s
CI / hurl (${{ matrix.example }}) (push) Has been skipped
CI / docker_push (duckdb) (push) Has been cancelled
CI / docker_push (minimal) (push) Has been cancelled
CI / windows_test (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
delete from sqlpage_files
|
||||
where path = $path and $confirm = 'yes'
|
||||
returning
|
||||
'redirect' as component,
|
||||
sqlpage.link(
|
||||
'index.sql',
|
||||
json_build_object('deleted', $path)
|
||||
) as link;
|
||||
|
||||
select 'alert' as component,
|
||||
'Delete ' || $path || ' ?' as title,
|
||||
'Are you sure you want to delete ' || $path || '?' as description,
|
||||
'warning' as color,
|
||||
sqlpage.link('delete.sql', json_build_object('path', $path, 'confirm', 'yes')) as link,
|
||||
'Delete' as link_text;
|
||||
@@ -0,0 +1,23 @@
|
||||
select 'shell' as component,
|
||||
'js/code-editor.js' as javascript;
|
||||
|
||||
select
|
||||
'form' as component,
|
||||
COALESCE('Editing ' || $path, 'New page') as title,
|
||||
'insert_file.sql' as action;
|
||||
|
||||
select
|
||||
'path' as name,
|
||||
'text' as type,
|
||||
'Name' as label,
|
||||
$path as value,
|
||||
'test.sql' as placeholder;
|
||||
|
||||
select
|
||||
'textarea' as type,
|
||||
'contents' as name,
|
||||
'code-editor' as id,
|
||||
'Contents' as label,
|
||||
(select contents from sqlpage_files where path = $path) as value,
|
||||
'SELECT ''text'' as component,
|
||||
''Hello, world!'' as contents;' as placeholder;
|
||||
@@ -0,0 +1,29 @@
|
||||
select
|
||||
'list' as component,
|
||||
'Website files' as title;
|
||||
|
||||
select
|
||||
path as title,
|
||||
path as link,
|
||||
sqlpage.link ('edit.sql', json_build_object ('path', path)) as edit_link,
|
||||
sqlpage.link ('delete.sql', json_build_object ('path', path)) as delete_link
|
||||
from
|
||||
sqlpage_files;
|
||||
|
||||
select
|
||||
'Create new file' as title,
|
||||
'edit.sql' as link,
|
||||
'file-plus' as icon,
|
||||
'green' as color;
|
||||
|
||||
select 'list' as component,
|
||||
'Database tables' as title;
|
||||
|
||||
select
|
||||
table_name as title,
|
||||
sqlpage.link ('view_table.sql', json_build_object('table_name', table_name)) as link
|
||||
from
|
||||
information_schema.tables
|
||||
where
|
||||
table_schema = 'public'
|
||||
and table_type = 'BASE TABLE';
|
||||
@@ -0,0 +1,10 @@
|
||||
insert into sqlpage_files (path, contents)
|
||||
values (:path, :contents::bytea)
|
||||
on conflict (path)
|
||||
do update set contents = excluded.contents
|
||||
returning
|
||||
'redirect' as component,
|
||||
sqlpage.link(
|
||||
'index.sql',
|
||||
json_build_object('inserted', :path)
|
||||
) as link;
|
||||
@@ -0,0 +1,34 @@
|
||||
const cdn = "https://cdn.jsdelivr.net/npm/monaco-editor@0.50.0/";
|
||||
|
||||
function on_monaco_load() {
|
||||
// Create an editor div, display it after the '#code-editor' textarea, hide the textarea, and create a Monaco editor in the div with the contents of the textarea
|
||||
// When the form is submitted, set the value of the textarea to the value of the Monaco editor
|
||||
const textarea = document.getElementById("code-editor");
|
||||
const editorDiv = document.createElement("div");
|
||||
editorDiv.style.width = "100%";
|
||||
editorDiv.style.height = "700px";
|
||||
textarea.parentNode.insertBefore(editorDiv, textarea.nextSibling);
|
||||
const monacoConfig = {
|
||||
value: textarea.value,
|
||||
language: "sql",
|
||||
};
|
||||
|
||||
self.MonacoEnvironment = {
|
||||
baseUrl: `${cdn}min/`,
|
||||
};
|
||||
const editor = monaco.editor.create(editorDiv, monacoConfig);
|
||||
textarea.style.display = "none";
|
||||
const form = textarea.form;
|
||||
form.addEventListener("submit", () => {
|
||||
textarea.value = editor.getValue();
|
||||
});
|
||||
}
|
||||
|
||||
function set_require_config() {
|
||||
require.config({ paths: { vs: `${cdn}min/vs` } });
|
||||
require(["vs/editor/editor.main"], on_monaco_load);
|
||||
}
|
||||
const loader_script = document.createElement("script");
|
||||
loader_script.src = `${cdn}min/vs/loader.js`;
|
||||
loader_script.onload = set_require_config;
|
||||
document.head.appendChild(loader_script);
|
||||
@@ -0,0 +1,15 @@
|
||||
select 'title' as component, $table_name as contents;
|
||||
select 'table' as component, true as search, true as sort;
|
||||
|
||||
select 'dynamic' as component, t as properties
|
||||
from table_contents($table_name) t
|
||||
LIMIT 1000;
|
||||
|
||||
select 'alert' as component,
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 'The table is empty.'
|
||||
WHEN COUNT(*) > 1000 THEN 'Only the first 1000 rows are shown.'
|
||||
END as description,
|
||||
'info' as color
|
||||
from table_contents($table_name)
|
||||
HAVING NOT COUNT(*) BETWEEN 1 AND 1000;
|
||||
Reference in New Issue
Block a user