/// <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); }