Zum Hauptinhalt springen

SelectBuilder

Class for building ANSI-SQL Query.

context.enableModules();
const { SelectBuilder } = require("ou.sp.SelectBuilder");

try {

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);

const rows = SelectBuilder
.from("costcenter", db)
.select("costcenterName", "string")
.select("id", "number")
.execute();

context.returnValue = JSON.stringify(rows);
} catch (error) {
context.errorMessage = error.message;
context.returnValue = -1;
} finally {
db.close();
}

Type Parameters

SelectedColumns

SelectedColumns = never

SelectedColumnNames

SelectedColumnNames = never

KnownTableName

KnownTableName extends keyof KnownTables = never

Implements

Constructors

Constructor

new SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>(): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Methods

select()

Call Signature

select<ColumnName, ColumnType>(column): SelectBuilder<SelectedColumns | { name: ColumnName; type: ColumnType; }, SelectedColumnNames | ColumnName, KnownTableName>

Adds a single column to the current select.

const query = new SelectBuilder
query.select({
name: "column1",
type: "string",
});
Type Parameters
ColumnName

ColumnName extends string | number | symbol

ColumnType

ColumnType extends any

Parameters
column

SelectColumnDefinition<Extract<ColumnName, string>, never, ColumnType>

The column to select. Can be a single ColumnDefinition or an array of ColumnDefinitions

Returns

SelectBuilder<SelectedColumns | { name: ColumnName; type: ColumnType; }, SelectedColumnNames | ColumnName, KnownTableName>

the current instance

Call Signature

select<ColumnName, ColumnAlias, ColumnType>(column): SelectBuilder<SelectedColumns | { name: ColumnName; alias: ColumnAlias; type: ColumnType; }, SelectedColumnNames | ColumnName, KnownTableName>

Adds a single column to the current select.

const query = new SelectBuilder
query.select({
name: "column1",
type: "string",
});
Type Parameters
ColumnName

ColumnName extends string | number | symbol

ColumnAlias

ColumnAlias extends string

ColumnType

ColumnType extends any

Parameters
column

SelectColumnDefinition<Extract<ColumnName, string>, ColumnAlias, ColumnType>

The column to select. Can be a single ColumnDefinition or an array of ColumnDefinitions

Returns

SelectBuilder<SelectedColumns | { name: ColumnName; alias: ColumnAlias; type: ColumnType; }, SelectedColumnNames | ColumnName, KnownTableName>

the current instance

Call Signature

select<ColumnName, ColumnAlias, ColumnType, TArray>(columns): SelectBuilder<SelectedColumns | ArrayToUnion<TArray>, SelectedColumnNames | ArrayToUnion<TArray>["name"], KnownTableName>

Adds a range of columns to the current select.

const query = new SelectBuilder
query.select([{
name: "column1",
type: "string",
},{
name: "column2",
type: "number",
},
]);
Type Parameters
ColumnName

ColumnName extends string | number | symbol

ColumnAlias

ColumnAlias extends string

ColumnType

ColumnType extends any

TArray

TArray extends SelectColumnDefinition<Extract<ColumnName, string>, ColumnAlias, ColumnType>[]

Parameters
columns

TArray

The columns name to select.

Returns

SelectBuilder<SelectedColumns | ArrayToUnion<TArray>, SelectedColumnNames | ArrayToUnion<TArray>["name"], KnownTableName>

the current instance

Call Signature

select<ColumnName, ColumnType>(column, type): SelectBuilder<SelectedColumns | SelectColumnDefinition<Extract<ColumnName, string>, never, ColumnType>, SelectedColumnNames | ColumnName, KnownTableName>

Adds a single column to the current select.

const query = new SelectBuilder
query.select("column1", "string");
Type Parameters
ColumnName

ColumnName extends string | number | symbol

ColumnType

ColumnType extends any

Parameters
column

ColumnName

The column name to select.

type

ColumnType

The data type

Returns

SelectBuilder<SelectedColumns | SelectColumnDefinition<Extract<ColumnName, string>, never, ColumnType>, SelectedColumnNames | ColumnName, KnownTableName>

the current instance


from()

Call Signature

from(table, dbOrBundle): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Specifies the table and db connection to use.

tipp

Use the static SelectBuilder.from function.

Using the static function:

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("table", db);

Using the instance function:

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const instance = new SelectBuilder();
instance.from("table", db);
Parameters
table

keyof KnownTables

The table you want to select data

dbOrBundle

DbWithProvider

Either a DBConnection instance or an object containing both the DBConnection and its DBProvider

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance

Call Signature

from(table, dbOrBundle, provider?): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Parameters
table

keyof KnownTables

dbOrBundle

DBConnection

provider?

DBProvider

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Deprecated

please use the newer syntax with DbWithProvider


where()

where(condition): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a raw where condition.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder
.from("customer", db)
.where("firstName like 'chuck%'")
.where("AND lastName like 'norris%'");

Parameters

condition

string

the raw where condition

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


andWhere()

andWhere(condition): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a raw AND where condition.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder
.from("customer", db)
.andWhere("recipient = 'K10000'")
.andWhere("costcenter like '%Einkauf%'")
.toSQL();
// SELECT * FROM costcenter WHERE recipient = 'K10000' AND (costcenter like '%Einkauf%')

Parameters

condition

string

the raw where condition

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


orWhere()

orWhere(condition): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a raw OR where condition.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder
.from("customer", db)
.orWhere("costcenter like '%Einkauf%'")
.orWhere("costcenterName like '%Einkauf%'")
.toSQL();
// SELECT * FROM costcenter WHERE costcenter like '%Einkauf%' OR (costcenterName like '%Einkauf%')

Parameters

condition

string

the raw where condition

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


limit()

limit(limitRows): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Indicate a maximum number of rows that are returned.

warnung

If you want to use the limit function, you must provide a DBProvider in from() or in the constructor (see example).

Example using MSSQL

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("customer", db, "mssql").limit(10).toSQL();
// SELECT TOP 10 * FROM customer

Example using MariaDB

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("customer", db, "mariadb").limit(10).toSQL();
// SELECT * FROM customer LIMIT 10

Parameters

limitRows

Maxmimal numbers of rows to fetch

number | bigint

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


offset()

offset(offsetRows): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Indicate a offset to start

warnung

If you want to use the offset function, you must provide a DBProvider in from() or in the constructor (see example).

Example using MSSQL

vorsicht

Watch out, offset must be followed by orderBy!

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("costcenter", db, "mssql").orderBy("id").offset(10).toSQL();
// SELECT * FROM costcenter ORDER BY id OFFSET 10 ROWS
const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("costcenter", db, "mssql").orderBy("id").limit(10).offset(10).toSQL();
// SELECT * FROM costcenter ORDER BY id OFFSET 10 ROWS FETCH FIRST 10 ROWS ONLY

Example using MariaDB

vorsicht

Watch out, offset can only be used with limit. If no limit was provided, the (nearly) largest number is provided as limit.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("costcenter", db, "mariadb").offset(10).toSQL();
// SELECT * FROM costcenter LIMIT 9007199254740991 OFFSET 10
const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("costcenter", db, "mariadb").limit(10).offset(10).toSQL();
// SELECT * FROM costcenter LIMIT 10 OFFSET 10

Parameters

offsetRows

number

Maxmimal numbers of rows to fetch

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


distinct()

distinct(): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds the DISTINCT flag to the query.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("costcenter", db).distinct().toSQL();
// SELECT DISTINTCT * FROM costcenter

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


aggregate()

Call Signature

aggregate<TColumnName>(command, column): SelectBuilder<SelectedColumns | { name: TColumnName; type: "number"; }, SelectedColumnNames | TColumnName, KnownTableName>

Add a special command for a column like MAX, MIN, SUM, AVG.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).aggregate("SUM", "column1");
Type Parameters
TColumnName

TColumnName extends string | number | symbol

Parameters
command

AggregateCommands

SQL commands like MAX, MIN, SUM, AVG

column

TColumnName

The column name to aggregate

Returns

SelectBuilder<SelectedColumns | { name: TColumnName; type: "number"; }, SelectedColumnNames | TColumnName, KnownTableName>

the current instance

Call Signature

aggregate<TColumnName, TColumnAlias>(command, column, alias): SelectBuilder<SelectedColumns | { name: TColumnName; alias: TColumnAlias; type: "number"; }, SelectedColumnNames | TColumnAlias, KnownTableName>

Add a special command for a column like MAX, MIN, SUM, AVG.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).aggregate("SUM", "column1", "alias");
Type Parameters
TColumnName

TColumnName extends string | number | symbol

TColumnAlias

TColumnAlias extends string

Parameters
command

AggregateCommands

SQL commands like MAX, MIN, SUM, AVG

column

TColumnName

The column name to aggregate

alias

TColumnAlias

An alias for the column name

Returns

SelectBuilder<SelectedColumns | { name: TColumnName; alias: TColumnAlias; type: "number"; }, SelectedColumnNames | TColumnAlias, KnownTableName>

the current instance


count()

Call Signature

count<TColumnName>(column): SelectBuilder<SelectedColumns | { name: "count"; type: "number"; }, SelectedColumnNames | TColumnName, KnownTableName>

Adds a COUNT aggregate to the select.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).count("column1");
Type Parameters
TColumnName

TColumnName extends string | number | symbol

Parameters
column

TColumnName

The column name to aggregate

Returns

SelectBuilder<SelectedColumns | { name: "count"; type: "number"; }, SelectedColumnNames | TColumnName, KnownTableName>

the current instance

Call Signature

count<TColumnName, TColumnAlias>(column, alias): SelectBuilder<SelectedColumns | { name: TColumnAlias; type: "number"; }, SelectedColumnNames | TColumnAlias, KnownTableName>

Adds a COUNT aggregate to the select.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).count("column1", "alias");
Type Parameters
TColumnName

TColumnName extends string | number | symbol

TColumnAlias

TColumnAlias extends string

Parameters
column

TColumnName

The column name to aggregate

alias

TColumnAlias

An alias for column name

Returns

SelectBuilder<SelectedColumns | { name: TColumnAlias; type: "number"; }, SelectedColumnNames | TColumnAlias, KnownTableName>

the current instance


join()

Call Signature

join(condition): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a join condition to the query.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).join("INNER JOIN address ON customer.customerId = address.customerId");
Parameters
condition

string

the join condition like "INNER JOIN address ON customer.customerId = address.customerId"

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance

Call Signature

join<TKnownTableName>(joinType, table, condition): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName | TKnownTableName>

Adds a join condition to the query.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).join("INNER", "address", "customer.customerId = address.customerId");
Type Parameters
TKnownTableName

TKnownTableName extends keyof KnownTables

Parameters
joinType

INNER, LEFT, RIGHT, FULL

"INNER" | "LEFT" | "RIGHT" | "FULL"

table

TKnownTableName

KnownTableName or the table name

condition

string

the join condition like "ON customer.customerId = address.customerId"

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName | TKnownTableName>


orderBy()

orderBy<TColumnName>(column, ascending?): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a order by condition to the query

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("customer", db).orderBy("created", false);

Type Parameters

TColumnName

TColumnName

Parameters

column

TColumnName

the column you want to sort

ascending?

boolean

true if sort ascending otherwise false (default true)

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


groupBy()

groupBy<TColumnName>(columns): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a group by condition to the query

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder
.from("customer", db)
.select({
name: "column1",
type: "string",
})
.groupBy("column1");
const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder
.from("customer", db)
.select([{
name: "column1",
type: "string",
},{
name: "column2",
type: "number",
},
])
.groupBy(["column1", "column2"]);

Type Parameters

TColumnName

TColumnName

Parameters

columns

the column or columns you want to group by

TColumnName | TColumnName[]

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance


having()

having(condition): SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

Adds a having condition to the query. The column should wrapped with brackets ([column] not column).

warnung

Attention, you must provide a group by condition

Parameters

condition

string

The having condition statement like "count(column1) > 10"

Returns

SelectBuilder<SelectedColumns, SelectedColumnNames, KnownTableName>

the current instance

See

groupBy!

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder
.from("customer", db)
.select({
name: "column1",
type: "string",
})
.groupBy("column1")
.having("COUNT(column1) > 0");

toSQL()

toSQL(): string

Returns the sql string

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("table", db).toSQL();
// SELECT * FROM table

Returns

string

Returns the generated SQL string

Implementation of

StatementBuilder.toSQL


toString()

toString(): string

Returns the sql string

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const output = SelectBuilder.from("table", db).toString();
// SELECT * FROM table

Returns

string

Returns the generated SQL string

Implementation of

StatementBuilder.toString


toDBResultSet()

toDBResultSet(): DBResultSet

Executes the current statement (executeQuery) and returns a DBResultSet.

Returns

DBResultSet

a DBResultSet


use()

Call Signature

use(dbOrBundle): this

Use a active DB connection. You can either pass a database connection together with its provider as a single object (recommended), or pass the connection and provider as separate parameters

Recommended usage:

select.use({ db, provider });

Alternative usage (legacy):

select.use(db, provider);
Parameters
dbOrBundle

DbWithProvider

Either a DBConnection instance or an object containing both the DBConnection and its DBProvider

Returns

this

the current instance

Call Signature

use(dbOrBundle, provider?): this

Parameters
dbOrBundle

DBConnection

provider?

DBProvider

Returns

this

Deprecated

please use the newer syntax with DbWithProvider


execute()

execute<TRow>(callback?): TRow[]

Executes the current query.

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const rows = SelectBuilder.from("costcenter", db).execute();

Type Parameters

TRow

TRow extends unknown

Parameters

callback?

QueryIteratorCallback<TRow>

Returns

TRow[]

Returns the mapped rows

Throws

Throws error when DBConnection.getLastError() is filled with information.


getColumns()

getColumns(): SelectColumnDefinition<string, string, DBResultType>[]

Returns the selected columns of this instance.

Returns

SelectColumnDefinition<string, string, DBResultType>[]

the selected columns


replace()

replace<ColumnName>(columnName, value, replacementValue?): this

Replaces each occurrence of a value in a specific column with a new value.

(...)
const orderItems = SelectBuilder
.from("orderItem", db)
.select("orderNumber", "string")
.select("itemNumber", "string")
.select("quantity", "number")
.select("articleName", "string")
.replace("quantity", null, 0)
.replace("articleName", null, "")
.execute();

Note that the replacing happens after the value has been transformed and mapped, meaning that if a column has an alias, the alias needs to be used as the column name in the replace method:

(...)
const vendors = SelectBuilder
.from("vendor", db)
.select("vendorId", "string")
.select({ name: "city", alias: "location", type: "string" })
.replace("location", null, "")
.execute();

If the replacement parameter is omitted and the search value is null, null values will be replaced with the default value depending on the selected type:

  • string: "" (empty string)
  • number/float: 0
  • boolean: false
  • date/timestamp: new Date(0)

Type Parameters

ColumnName

ColumnName extends string | number | symbol

Parameters

columnName

ColumnName

The column name to replace values

value

ReplaceableColumns<KnownTableName, SelectedColumns>[ColumnName]

The value to search for

replacementValue?

unknown

The replacement value

Returns

this


replaceEvery()

replaceEvery(value, replacementValue?): this

Replaces each occurrence of a value in all columns with a new value.

(...)
const orderItems = SelectBuilder
.from("orderItem", db)
.select("orderNumber", "string")
.select("itemNumber", "string")
.select("quantity", "number")
.select("articleName", "string")
.replaceEvery(null, 0)
.execute();

If the replacement parameter is omitted and the search value is null, null values will be replaced with the default value depending on the selected type:

  • string: "" (empty string)
  • number/float: 0
  • boolean: false
  • date/timestamp: new Date(0)

Parameters

value

unknown

The value to search for

replacementValue?

unknown

The replacement value

Returns

this


replaceEveryNull()

replaceEveryNull(replacementValue?): this

Replaces each occurrence of null in all columns with a new value.

(...)
const orderItems = SelectBuilder
.from("orderItem", db)
.select("orderNumber", "string")
.select("itemNumber", "string")
.select("quantity", "number")
.select("articleName", "string")
.replaceEveryNull()
.execute();

If the replacement parameter is omitted, null values will be replaced with the default value depending on the selected type:

  • string: "" (empty string)
  • number/float: 0
  • boolean: false
  • date/timestamp: new Date(0)

Parameters

replacementValue?

unknown

The replacement value

Returns

this


from()

Call Signature

static from<TKnownTableName>(table, dbOrBundle): SelectBuilder<never, never, TKnownTableName>

Creates a new SelectBuilder instance by using the specific table and db connection.

You can either pass a database connection together with its provider as a single object (recommended), or pass the connection and provider as separate parameters

Recommended usage:

const { db, provider } = getDatabaseConnectionAndProvider("ousp");
const select = SelectBuilder.from("table", { db, provider });

Alternative usage (legacy):

const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
const db = new DBConnection("odbc", "ousp", dbUser, dbPassword);
const select = SelectBuilder.from("table", db, "mssql");
Type Parameters
TKnownTableName

TKnownTableName extends keyof KnownTables

Parameters
table

TKnownTableName

The table you want to select data

dbOrBundle

DbWithProvider

Either a DBConnection instance or an object containing both the DBConnection and its DBProvider

Returns

SelectBuilder<never, never, TKnownTableName>

a new instance of SelectBuilder class

Call Signature

static from<TKnownTableName>(table, dbOrBundle, provider?): SelectBuilder<never, never, TKnownTableName>

Type Parameters
TKnownTableName

TKnownTableName extends keyof KnownTables

Parameters
table

TKnownTableName

dbOrBundle

DBConnection

provider?

DBProvider

Returns

SelectBuilder<never, never, TKnownTableName>

Deprecated

please use the newer syntax with DbWithProvider