2using System.Collections.Generic;
3using System.Threading.Tasks;
30 return "MongoDB Database";
50 object MongoClientSettings =
Types.
CreateObject(
"MongoDB.Driver.MongoClientSettings");
55 object MongoServerAddress;
79 return Task.CompletedTask;
94 public async Task
Test(Dictionary<string, object> Form,
bool Save,
object Settings)
96 if (!Form.TryGetValue(
"HostName", out
object Obj) ||
97 !(Obj is
string HostName) ||
98 !Form.TryGetValue(
"DatabaseName", out Obj) ||
99 !(Obj is
string DatabaseName) ||
100 !Form.TryGetValue(
"DefaultCollection", out Obj) ||
101 !(Obj is
string DefaultCollection) ||
102 !Form.TryGetValue(
"UserName", out Obj) ||
103 !(Obj is
string UserName) ||
104 !Form.TryGetValue(
"Password", out Obj) ||
105 !(Obj is
string Password) ||
106 !Form.TryGetValue(
"PortNumber", out Obj) ||
107 !(Obj is
string PortNumberString) ||
113 (
string Message,
string _,
string _) = await this.
Test(HostName, DatabaseName, DefaultCollection, UserName, Password,
116 if (!
string.IsNullOrEmpty(Message))
150 private async Task<(string, string, string)>
Test(
string HostName,
string DatabaseName,
string DefaultCollection,
string UserName,
string Password,
157 if (
string.IsNullOrEmpty(PortNumberString))
159 else if (!
int.TryParse(PortNumberString, out
int i) || i <= 0 || i > 65535)
160 return (
"Invalid Port Number.",
MONGO_DB_PORT, PortNumberString);
164 object MongoClientSettings =
Types.
CreateObject(
"MongoDB.Driver.MongoClientSettings");
166 Types.
SetProperty(MongoClientSettings,
"ConnectTimeout", TimeSpan.FromSeconds(5));
168 if (!
string.IsNullOrEmpty(HostName))
172 object MongoServerAddress;
174 if (PortNumber.HasValue)
175 MongoServerAddress =
Types.
CreateObject(
"MongoDB.Driver.MongoServerAddress", HostName, PortNumber.Value);
177 MongoServerAddress =
Types.
CreateObject(
"MongoDB.Driver.MongoServerAddress", HostName);
187 if (!
string.IsNullOrEmpty(Settings.
UserName))
191 object MongoCredential =
Types.
CallStatic(
"MongoDB.Driver.MongoCredential",
"CreateCredential",
192 DatabaseName, UserName, Password);
202 object Client =
Types.
CreateObject(
"MongoDB.Driver.MongoClient", MongoClientSettings);
204 Task Task =
Types.
Call(Client,
"StartSessionAsync") as Task;
207 Types.
Call(Client,
"GetDatabase", DatabaseName);
211 Settings.Host = HostName;
212 Settings.Port = PortNumber;
213 Settings.UserName = UserName;
214 Settings.Password = Password;
215 Settings.Database = DatabaseName;
216 Settings.DefaultCollection = DefaultCollection;
224 return (
null,
null,
null);
252 (
string Message,
string Parameter,
string Value) = await this.
Test(Host,
Name, Default, User, Password, Port,
true,
MongoDBSettings);
254 if (!
string.IsNullOrEmpty(Message))
Static class managing the runtime environment of the IoT Gateway.
static string ApplicationName
Application Name.
Interface for Database settings
Plugin for MongoDB databases.
DatabaseSettings CreateNewSettings()
Creates a new settings object.
const string MONGO_DB_NAME
Environment variable name for MongoDB Database Name.
const string MONGO_DB_PASSWORD
Environment variable name for MongoDB Password.
const string MONGO_DB_PORT
Environment variable name for MongoDB Port number.
const string MONGO_DB_HOST
Environment variable name for MongoDB Host Name.
string Name(Language Language)
Displayable name of database plug-in
async Task Test(Dictionary< string, object > Form, bool Save, object Settings)
Tests database connection parameters.
const string MONGO_DB_USER
Environment variable name for MongoDB User Name.
const string MONGO_DB_DEFAULT
Environment variable name for MongoDB default collection.
Task ConfigureSettings(object Settings)
Configures a database connection using the provided settings object.
async Task< bool > TestEnvironmentVariables(DatabaseConfiguration Configuration, object Settings)
Tests database connection parameters available via environment variables.
MongoDBDatabase()
Plugin for MongoDB databases.
string SettingsResource
Resource name pointing to settings form.
string Host
Name of database host, or empty if running on local machine.
string DefaultCollection
Default collection
int? Port
Port number, or null if standard MongoDB service port.
string Database
Database name
void LogEnvironmentError(string EnvironmentVariable, object Value)
Logs an error to the event log, telling the operator an environment variable value contains an error.
bool TryGetEnvironmentVariable(string VariableName, bool Required, out string Value)
Tries to get a string-valued environment variable.
The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repe...
Static interface for database persistence. In order to work, a database provider has to be assigned t...
static void Register(IDatabaseProvider DatabaseProvider)
Registers a database provider for use from the static Database class, throughout the lifetime of the ...
static bool Locked
If the datbase provider has been locked for the rest of the run-time of the application.
Static class that dynamically manages types and interfaces available in the runtime environment.
static void SetProperty(object Object, string PropertyName, object Value)
Sets a property value (or field value) in an object.
static object CreateObject(string TypeName, params object[] Parameters)
Creates an object of a given type, given its full name.
static object Call(object Object, string MethodName, params object[] Arguments)
Calls a method on an object.
static object CallStatic(string TypeName, string MethodName, params object[] Arguments)
Calls a static method on a class.
Contains information about a language.
Interface for Database plug-ins
Interface for database providers that can be plugged into the static Database class.