Skip to content
Oxford Harrison edited this page Nov 9, 2024 · 27 revisions

Here we talk about the client.query() method in more detail along with other Linked QL APIs that essentially let you programmatically do the same things possible with client.query().

As an example of one of these APIs, a CREATE DATABASE operation...

const savepoint = await client.query('CREATE DATABASE IF NOT EXISTS database_1');

could be programmatically achieved as:

const savepoint = await client.createDatabase('database_1', { ifNotExists: true });

That said, while the createDatabase() method is associated with the base Client object, the different programmatic query APIs in Linked QL are actually organized into three hierarchical scopes:

  • the top-level scope (represented by the Client interface), featuring methods such as: createDatabase(), alterDatabase(), dropDatabase(), hasDatabase(), describeDatabase()

  • the database-level scope (represented by a certain Database interface), featuring methods such as: createTable(), alterTable(), dropTable(), hasTable(), describeTable()

  • the table-level scope (represented by a certain Table interface), featuring methods such as: select(), insert(), upsert(), update(), delete()

Each object provides a way to narrow in to the next; e.g. from the top-level scope to a database scope...

const database_1 = client.database('database_1');

and from there to a table scope:

const table_1 = database.table('table_1');

These APIs at play would look something like:

// Create database "database_1"
await client.createDatabase('database_1', { ifNotExists: true });
// Enter "database_1" and create a table
await client.database('database_1').createTable({
    name: 'table_1', columns: [
        { name: 'column_1', type: 'int', identity: true, primaryKey: true },
        { name: 'column_2', type: 'varchar' },
        { name: 'column_3', type: 'varchar' },
    ]
});
// Enter "table_1" and insert data
await client.database('database_1').table('table_1').insert({
    column_2: 'Column 2 test content',
    column_3: 'Column 3 test content',
});

Primary APIs

Schema APIs

Clone this wiki locally