/// <summary>
        /// Creates a task database in the given location, if a project database already exists, false is returned
        /// <para>Regardless of database creation, the datasource will be registered and available</para>
        /// </summary>
        /// <param name="projectName"></param>
        /// <param name="projectLocation"></param>
        public bool CreateProjectDatabase(string projectName, string projectLocation)
        {
            var databaseLocation = Path.Combine(projectLocation, $"{projectName}.{NULAH_DB_EXTENSION}");
            var databaseCreated  = _sqliteProvider.CreateOrRegisterDataSource(projectName, databaseLocation);

            // Track the new task list database in the application settings database if this is the first time we're creating it
            if (databaseCreated == true)
            {
                _sqliteProvider.CreateTable <Task>(projectName);

                // Create metadata
                _sqliteProvider.CreateTable <NulahDBMeta>(projectName);
                var nulahDBMetaPropertyList = NulahStandardLib.GetPropertiesForType <NulahDBMeta>();
                var dbMetadata = new NulahDBMeta
                {
                    IsProjectDatabase       = true,
                    ProjectName             = projectName,
                    ProjectOriginalLocation = projectLocation,
                    TaskListName            = projectName // TODO: Maybe add override to this later for project task lists?
                };

                _sqliteProvider.Insert <NulahDBMeta>(projectName,
                                                     $"INSERT INTO [{nameof(NulahDBMeta)}] ({string.Join(", ", nulahDBMetaPropertyList.Select(x => $"[{ x.Name}]"))}) VALUES ({string.Join(",", nulahDBMetaPropertyList.Select(x => $"@{x.Name}"))})",
                                                     dbMetadata
                                                     );

                CreateDatabaseEntry(databaseLocation);
            }

            return(databaseCreated);
        }
        /// <summary>
        /// Create a database in the users %appdata%
        /// </summary>
        /// <param name="datasourceName"></param>
        /// <param name="databaseName"></param>
        public void CreateAppDataDatabase(string datasourceName, string databaseName, NulahDBMeta dbMetadata)
        {
            var databaseLocation = Path.Combine(_applicationDataLocation, $"{databaseName}.{NULAH_DB_EXTENSION}");

            var databaseCreated = _sqliteProvider.CreateOrRegisterDataSource(datasourceName, databaseLocation);

            // Track the new task list database in the application settings database if this is the first time we're creating it
            if (databaseCreated == true)
            {
                _sqliteProvider.CreateTable <Task>(datasourceName);

                // Create metadata
                _sqliteProvider.CreateTable <NulahDBMeta>(datasourceName);
                var nulahDBMetaPropertyList = NulahStandardLib.GetPropertiesForType <NulahDBMeta>();
                _sqliteProvider.Insert <NulahDBMeta>(datasourceName,
                                                     $"INSERT INTO [{nameof(NulahDBMeta)}] ({string.Join(", ", nulahDBMetaPropertyList.Select(x => $"[{ x.Name}]"))}) VALUES ({string.Join(",", nulahDBMetaPropertyList.Select(x => $"@{x.Name}"))})",
                                                     dbMetadata
                                                     );

                CreateDatabaseEntry(databaseLocation);
            }
        }