SQLPage v0.20.4 documentation

If you are completely new to SQLPage, you should start by reading the get started tutorial, which will guide you through the process of creating your first SQLPage application.

Building an application with SQLPage is quite simple. To create a new web page, just create a new SQL file. For each SELECT statement that you write, the data it returns will be analyzed and rendered to the user. The two most important concepts in SQLPage are components and parameters.

To select a component and set its top-level properties, you write the following SQL statement:

SELECT 'component_name' AS component, 'my value' AS top_level_parameter_1;

Then, you can set its row-level parameters by writing a second SELECT statement:

SELECT my_column_1 AS row_level_parameter_1, my_column_2 AS row_level_parameter_2 FROM my_table;

This page documents all the components provided by default in SQLPage and their parameters. Use this as a reference when building your SQL application. If at any point you need help, you can ask for it on the SQLPage forum.

If you know some HTML, you can also easily create your own components for your application.

components

The "dynamic" component

A special component that can be used to render other components, the number and properties of which are not known in advance.

Top-level parameters

properties

A json object or array that contains the names and properties of other components

Example 1

Rendering a text paragraph dynamically.

select 
    'dynamic' as component,
    '[{"component":"text"}, {"contents":"Blah", "bold":true}]' as properties;

Result

Blah

Examples

Dynamic shell

On databases without a native JSON type (such as the default SQLite database), you can use the dynamic component to generate json data to pass to components that expect it.

This example generates a menu similar to the shell example, but without using a native JSON type.

SELECT 'dynamic' AS component, json_object(
    'component', 'shell',
    'title', 'SQLPage documentation',
    'link', '/',
    'menu_item', json_array(
        json_object(
            'link', 'index.sql',
            'title', 'Home'
        ),
        json_object(
            'title', 'Community',
            'submenu', json_array(
                json_object(
                    'link', 'blog.sql',
                    'title', 'Blog'
                ),
                json_object(
                    'link', '//github.com/lovasoa/sqlpage/issues',
                    'title', 'Issues'
                ),
                json_object(
                    'link', '//github.com/lovasoa/sqlpage/discussions',
                    'title', 'Discussions'
                ),
                json_object(
                    'link', '//github.com/lovasoa/sqlpage',
                    'title', 'Github'
                )
            )
        )
    )
) AS properties

View the result of this query, as well as an example of how to generate a dynamic menu based on the database contents.

Static component data stored in .json files

You can also store the data for a component in a .json file, and load it using the dynamic component.

This can be useful to store the data for a component in a separate file, shared between multiple pages, and avoid having to escape quotes in SQL strings.

For instance, the following query will load the data for a shell component from the file shell.json:

SELECT 'dynamic' AS component, sqlpage.read_file_as_text('shell.json') AS properties;

and shell.json would be placed at the website's root and contain the following:

{
    "component": "shell",
    "title": "SQLPage documentation",
    "link": "/",
    "menu_item": [
        {"link": "index.sql", "title": "Home"},
        {"title": "Community", "submenu": [
            {"link": "blog.sql", "title": "Blog"},
            {"link": "https//github.com/lovasoa/sqlpage/issues", "title": "Issues"},
            {"link": "https//github.com/lovasoa/sqlpage/discussions", "title": "Discussions"},
            {"link": "https//github.com/lovasoa/sqlpage", "title": "Github"}
        ]}
    ]
}

Official SQLPage documentation