abstract
DataSource
Represents a data source that can be used to retrieve, manipulate and store data outside the Olympe application environment. This class provides several methods for performing CRUD (create, read, update, delete) operations on data, as well as file upload and download functionality.
To create a new data source, add a Data Connector in your project in DRAW and download the boilerplate.
Then implement or extend the required methods: init
, destroy
, healthCheck
, executeQuery
and applyTransaction
For file capabilities, you must also implement: uploadFileContent
, downloadFileContent
and deleteFileContent
The CORE library already provide some default connectors such as PostgreSQL and MSSQL. Their implementation is open source and available in CORE on Github.
Extends
Constructors
Constructor
new DataSource(): DataSource;
Returns
DataSource
Inherited from
Properties
containsRel
static containsRel: Relation<CloudObject, CloudObject>;
Relation between a container (a CloudObject
) that has children (other CloudObject
s)
For example, from a folder to the contained elements or from a function to the elements needed for that function to run.
Inherited from
extendedByRel
static extendedByRel: Relation<CloudObject, CloudObject>;
Inverse relation of extendRel
Inherited from
extendRel
static extendRel: Relation<CloudObject, CloudObject>;
Model CloudObjects
can inherit relations and properties
from another CloudObject
model to mimic their behaviour.
Relation from a model to the CloudObject model it extends.
A --extendRel-> B
A inherits B's properties and relations.
Inherited from
instancesRel
static instancesRel: Relation<CloudObject, CloudObject>;
Inverse relation of modelRel between a model and its instances
Equivalent to modelRel.getInverse()
Inherited from
modelRel
static modelRel: Relation<CloudObject, CloudObject>;
Relation between a CloudObject
and its model
instance --modelRel-> model
Inherited from
nameProp
static nameProp: Property<string>;
Name property for all CloudObjects
Inherited from
propertyRel
static propertyRel: Relation<CloudObject, PropertyModel>;
Relation between a model and the properties it defines.
Inherited from
Methods
asInstance()
static asInstance<T>(this): T;
Get this CloudObject
class as a CloudObject
instance.
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type |
---|---|
this | Class <T > |
Returns
T
the current data type class as a CloudObject instance.
Inherited from
createWith()
static createWith<T>(
this,
properties,
model?,
source?): T;
Create an instance of the specified data type (or model
)
in the local datacloud (not persisted) with the specified property values.
If the model is not specified, it uses this
DataType.
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type | Description |
---|---|---|
this | Class <T > | - |
properties | Map <InstanceOrTag , any > | mappings of (propertyTag -> propertyValue) |
model? | InstanceOrTag | tag of the model of the CloudObject you want to create. |
source? | string |
Returns
T
newly created CloudObject
Inherited from
exists()
static exists(tag): boolean;
Checks whether a CloudObject
exists or not.
Parameters
Parameter | Type | Description |
---|---|---|
tag | InstanceOrTag | tag of the CloudObject |
Returns
boolean
true
if tag
is valid and references a CloudObject.
Static
Inherited from
get()
static get<T>(tag): T;
Get the CloudObject whose tag is specified.
This only works if the CloudObject
is already present in the local datacloud cache.
(NB: you can use a Query to retrieve a distant CloudObject)
Type Parameters
Type Parameter |
---|
T extends CloudObject |
Parameters
Parameter | Type | Description |
---|---|---|
tag | InstanceOrTag | tag of the CloudObject |
Returns
T
CloudObject
specified by the tag
Static
Inherited from
getProperties()
static getProperties(): Property<any>[];
The attributes of a CloudObject are called properties. Properties can be of different types,
e.g. Property<string>
, Property<number>
, Property<Date>
.
If a Person
CloudObject
has an age
property, all the instances of Person
can access
the age
property using the same tag, the tag of the age
property. This method returns all
properties defined by the Data Type associated to this class.
Returns
Property
<any
>[]
All properties defined for a data type
Inherited from
getRelations()
static getRelations<O, D>(this): (
| Relation<O, D>
| Relation<D, O>)[];
Return all the relations whose origin OR destination is the CloudObject associated to this class.
Type Parameters
Type Parameter |
---|
O extends CloudObject |
D extends CloudObject |
Parameters
Parameter | Type |
---|---|
this | Class <O > |
Returns
(
| Relation
<O
, D
>
| Relation
<D
, O
>)[]
All relations defined on the current data type. It can be the destination or the origin of the relations.
Inherited from
instancesOf()
static instancesOf<T>(model): Query<T, never>;
Return a query starting from all instances of this Data Type.
Type Parameters
Type Parameter |
---|
T extends CloudObject |
Parameters
Parameter | Type | Description |
---|---|---|
model | | InstanceOrTag | Class <T > | data type to get instances of |
Returns
Query
<T
, never
>
A query starting from the instances of the specified model.
Inherited from
applyTransaction()
protected applyTransaction(transaction, options?): Promise<void>;
Applies the provided Operation array to the data source as one transaction
Parameters
Parameter | Type | Description |
---|---|---|
transaction | Operation [] | The Operation array to apply. |
options? | { batch : boolean ; } | the options |
options.batch? | boolean | if true, it means that the transaction has been executed using the () function. |
Returns
Promise
<void
>
A Promise that resolves when the transaction is completed. Rejects when the transaction fails.
deleteFileContent()
protected deleteFileContent(fileTag, dataType): Promise<void>;
Deletes file content from the data source.
Parameters
Parameter | Type | Description |
---|---|---|
fileTag | string | The tag of the file. |
dataType | string | The file data type |
Returns
Promise
<void
>
A Promise that resolves when the file content is successfully deleted. Rejects otherwise.
destroy()
protected destroy(): Promise<void>;
Disconnects the data source.
Returns
Promise
<void
>
A Promise that resolves when the data source is destroyed.
downloadFileContent()
protected downloadFileContent(fileTag, dataType): Promise<Uint8Array | Readable>;
Downloads one file's content from the data source.
Parameters
Parameter | Type | Description |
---|---|---|
fileTag | string | The tag of the file. |
dataType | string | The file data type |
Returns
Promise
<Uint8Array
| Readable
>
A Promise that resolves with the binary data of the file as an Uint8Array or a node Readable Stream. Rejects otherwise.
equals()
equals(object): boolean;
Compare this CloudObject and the given one and return whether they are identical or not.
Parameters
Parameter | Type | Description |
---|---|---|
object | any | the object to compare |
Returns
boolean
true if the specified object is the same CloudObject
Inherited from
executeQuery()
protected executeQuery(query): Promise<DataResult>;
Executes the provided Query once and returns a DataResult.
Parameters
Parameter | Type | Description |
---|---|---|
query | Query <CloudObject , any > | The Query object to execute. |
Returns
Promise
<DataResult
>
A Promise that resolves with the DataResult object.
follow()
follow<D>(relation): Query<D, never>;
Start a query from this instance and follow the relation given as argument. The query starts from this single instance, and follows a relation to an arbitrary number of destination instances. See Query.follow(relation)
The following are equivalent:
myCloudObject.follow(relation);
myCloudObject.query().follow(relation);
Type Parameters
Type Parameter |
---|
D extends CloudObject |
Parameters
Parameter | Type | Description |
---|---|---|
relation | Relation <DataSource , D > | the relation to follow from the starting instance (this ) |
Returns
Query
<D
, never
>
query starting from this
and following the relation relation
as first step of the query
Inherited from
followSingle()
followSingle<D>(relation): QuerySingle<D>;
Start a querySingle
from this instance that follows 0..1 relations
The query starts from this instance, and follow the relation to a single
destination instance. It is equivalent to QuerySingle.from(this).follow(relation)
.
Type Parameters
Type Parameter |
---|
D extends CloudObject |
Parameters
Parameter | Type | Description |
---|---|---|
relation | Relation <DataSource , D > | to follow from this starting instance |
Returns
QuerySingle
<D
>
a query following 0-1 relations
Inherited from
get()
get<T>(property): T;
Get the current value of the specified property for this CloudObject instance
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type | Description |
---|---|---|
property | | InstanceOrTag | Property <T > | property or property's tag |
Returns
T
property value
Inherited from
getConfig()
getConfig(key): any;
Retrieves the configuration value associated with the provided key in the data source oConfig.
Parameters
Parameter | Type | Description |
---|---|---|
key | string | Key to retrieve the configuration value for. |
Returns
any
The configuration value associated with the provided key.
getId()
getId(): string;
Returns the tag of the data source.
Returns
string
tag of the data source.
getModel()
getModel(): CloudObject;
Every CloudObject
has a model which defines relations and properties its instances may have.
Returns
the model of this CloudObject
instance as a CloudObject
instance
Inherited from
getModelTag()
getModelTag(): string;
Every CloudObject
has a model which defines relations and properties its instances may have.
Returns
string
the tag of the model of this CloudObject
instance
Inherited from
getSource()
getSource(): string;
Return the source id that owns this cloud object.
Returns
string
Inherited from
getTag()
getTag(): string;
Every CloudObject
has a unique tag.
Returns
string
tag of the CloudObject
Inherited from
healthCheck()
protected healthCheck(): Promise<void>;
Performs a health check on the data source, checking if the connection is alive.
Returns
Promise
<void
>
A Promise that resolves when the health check is completed successfully, rejects otherwise.
init()
protected init(context): Promise<void>;
Initializes the data source connection with custom parameters provided in oConfig. It can also perform a health check to ensure the connection is active. Subscribes to the DataSource.observeDataTypes observable to handle changes to the data types in the data source.
Parameters
Parameter | Type | Description |
---|---|---|
context | BrickContext | a context with the same livecycle as the Data Source |
Returns
Promise
<void
>
A promise that resolves with void when initialization is complete. Reject if initialization did not complete.
isPersisted()
isPersisted(): boolean;
Return the persistence state of this instance.
CloudObject
s can either be volatile, and only live in the local cache. In this case,
the CloudObject
instance is not persisted. If a CloudObject
is persisted, it is stored in an external data store.
This means that the instance can be accessible through other Olympe VMs in the same environment.
Returns
boolean
a boolean indicating if this object is persisted in a non-volatile way.
Inherited from
name()
name(): string;
Every CloudObject
can define a value for its nameProperty
.
This method returns the current value of that property for this instance.
Returns
string
the value of the name property
of this
Inherited from
observe()
observe<T>(
context,
property,
waitForValue?): Observable<T>;
Get an observable to the current value of the specified property for this CloudObject
instance.
The observable gets the new value each time the property gets updated in the datacloud.
The observable gets completed automatically once the specified context is cleared.
If waitForValue
is set to FALSE (TRUE by default), the first value received by the observable is null if there is no value at call time.
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type | Description |
---|---|---|
context | Context | context to which the Observable is attached |
property | | InstanceOrTag | Property <T > | property or property's tag to observe |
waitForValue? | boolean | whether the observable wait for a first value to get a value. (Default = true) |
Returns
Observable
<T
>
Observable of property values
Inherited from
observeProperties()
observeProperties<T>(context): Observable<[Property<T>, T]>;
Get an observable to pair [property, value] for this CloudObject
instance.
The observable gets the new value each time any property gets updated in the datacloud. The observable gets completed automatically once the specified context is cleared.
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type | Description |
---|---|---|
context | Context | Context to which the Observable will be attached |
Returns
Observable
<[Property
<T
>, T
]>
Observable of property values
Inherited from
query()
query(): Query<DataSource, never>;
Create and return a query starting from this instance
Returns
Query
<DataSource
, never
>
a query starting at this CloudObject
instance
Inherited from
toJSON()
toJSON(): Object;
Create a Javascript object from this CloudObject current state, including its tag and property values. It provides the same result as toObject called with nameAsKey = true and inheritedProperties = false.
Returns
Object
Inherited from
toObject()
toObject(namesAsKey?, inheritedProperties?): Object;
Create a Javascript object from this CloudObject current state.
Parameters
Parameter | Type | Description |
---|---|---|
namesAsKey? | boolean | If true, use the property name instead of the property tag as keys of the generated object. |
inheritedProperties? | boolean | If false, do not including inherited property. By default, it includes them. |
Returns
Object
Inherited from
uploadFileContent()
protected uploadFileContent(
fileTag,
dataType,
binary): Promise<void>;
Uploads one file's content to the data source.
Parameters
Parameter | Type | Description |
---|---|---|
fileTag | string | The tag of the file. |
dataType | string | The file data type |
binary | Uint8Array | The binary data of the file. |
Returns
Promise
<void
>
A Promise that resolves when the file content is uploaded. Rejects otherwise.