ui/lib/modules/settings/application/project_service.dart (42 lines of code) (raw):
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import 'package:cloud_provision_shared/services/models/project.dart';
import 'package:cloudprovision/modules/settings/data/project_provider.dart';
import 'package:cloudprovision/modules/settings/data/project_repository.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'project_service.g.dart';
class ProjectService {
ProjectService(this.ref);
final Ref ref;
Future<bool> bootstrapTargetProject(Project project) async {
try {
if (project.name != "null") {
final ProjectRepository projectRepository =
ref.read(projectRepositoryProvider);
projectRepository.enableServices(project.projectId);
// TODO This could be moved to template scripts to setup the dependencies
projectRepository.createArtifactRegistry(
project.projectId, "us-central1", "cp-repo", "DOCKER");
projectRepository.grantRoles(project.projectId, project.projectNumber);
}
} on Error catch (e, stacktrace) {
print("Error occurred: $e stackTrace: $stacktrace");
return false;
}
return true;
}
Future<bool> isServiceEnabled(Project project, String serviceName) async {
final ProjectRepository projectRepository =
ref.read(projectRepositoryProvider);
return await projectRepository.verifyService(
project.projectId, serviceName);
}
}
@riverpod
ProjectService projectService(ProjectServiceRef ref) {
return ProjectService(ref);
}
@riverpod
Future<bool> serviceStatus(ServiceStatusRef ref,
{required Project project, required String serviceName}) {
ProjectService projectService = ref.read(projectServiceProvider);
return projectService.isServiceEnabled(project, serviceName);
}