Implement routes for project settings tab (#64)

* Add routes to settings tab panel

* Refactor code to move settings tab components to pages

* Rename registry fields in project and deployment entity

* Use kebab case for routes

---------

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
This commit is contained in:
2024-02-12 15:18:00 +05:30
committed by GitHub
co-authored by neeraj
parent 559e0f8934
commit 76dfd3bb76
18 changed files with 215 additions and 198 deletions
+2 -2
View File
@@ -63,10 +63,10 @@ export class Deployment {
url!: string;
@Column('varchar')
recordId!: string;
registryRecordId!: string;
@Column('simple-json')
recordData!: ApplicationRecord;
registryRecordData!: ApplicationRecord;
@Column({
enum: Environment
+2 -2
View File
@@ -56,10 +56,10 @@ export class Project {
prodBranch!: string;
@Column('varchar', { nullable: true })
recordId!: string | null;
registryRecordId!: string | null;
@Column('simple-json', { nullable: true })
recordData!: ApplicationDeploymentRequest | null;
registryRecordData!: ApplicationDeploymentRequest | null;
@Column('text', { default: '' })
description!: string;
+5 -4
View File
@@ -13,6 +13,7 @@ const APP_RECORD_TYPE = 'ApplicationRecord';
const DEPLOYMENT_RECORD_TYPE = 'ApplicationDeploymentRequest';
const AUTHORITY_NAME = 'snowball';
// TODO: Move registry code to laconic-sdk/watcher-ts
export class Registry {
private registry: LaconicRegistry;
private registryConfig: RegistryConfig;
@@ -22,7 +23,7 @@ export class Registry {
this.registry = new LaconicRegistry(registryConfig.gqlEndpoint, registryConfig.restEndpoint, registryConfig.chainId);
}
async createApplicationRecord (data: { recordName: string, appType: string }): Promise<{recordId: string, recordData: ApplicationRecord}> {
async createApplicationRecord (data: { recordName: string, appType: string }): Promise<{registryRecordId: string, registryRecordData: ApplicationRecord}> {
// TODO: Get record name from repo package.json name
const recordName = data.recordName;
@@ -77,10 +78,10 @@ export class Registry {
await this.registry.setName({ cid: result.data.id, crn: `${crn}@${applicationRecord.app_version}` }, this.registryConfig.privateKey, this.registryConfig.fee);
await this.registry.setName({ cid: result.data.id, crn: `${crn}@${applicationRecord.repository_ref}` }, this.registryConfig.privateKey, this.registryConfig.fee);
return { recordId: result.data.id, recordData: applicationRecord };
return { registryRecordId: result.data.id, registryRecordData: applicationRecord };
}
async createApplicationDeploymentRequest (data: { appName: string }): Promise<{recordId: string, recordData: ApplicationDeploymentRequest}> {
async createApplicationDeploymentRequest (data: { appName: string }): Promise<{registryRecordId: string, registryRecordData: ApplicationDeploymentRequest}> {
const crn = this.getCrn(data.appName);
const records = await this.registry.resolveNames([crn]);
const applicationRecord = records[0];
@@ -124,7 +125,7 @@ export class Registry {
log(`Application deployment request record published: ${result.data.id}`);
log('Application deployment request data:', applicationDeploymentRequest);
return { recordId: result.data.id, recordData: applicationDeploymentRequest };
return { registryRecordId: result.data.id, registryRecordData: applicationDeploymentRequest };
}
getCrn (appName: string): string {
+7 -7
View File
@@ -214,7 +214,7 @@ export class Service {
}
async createDeployment (userId: string, data: DeepPartial<Deployment>): Promise<Deployment> {
const { recordId, recordData } = await this.registry.createApplicationRecord({
const { registryRecordId, registryRecordData } = await this.registry.createApplicationRecord({
recordName: data.project?.name ?? '',
appType: data.project?.template ?? ''
});
@@ -226,15 +226,15 @@ export class Service {
environment: data.environment,
isCurrent: data.isCurrent,
status: DeploymentStatus.Building,
recordId,
recordData,
registryRecordId,
registryRecordData,
domain: data.domain,
createdBy: Object.assign(new User(), {
id: userId
})
});
log(`Application record ${recordId} published for deployment ${newDeployement.id}`);
log(`Application record ${registryRecordId} published for deployment ${newDeployement.id}`);
return newDeployement;
}
@@ -262,10 +262,10 @@ export class Service {
domain: null
});
const { recordId, recordData } = await this.registry.createApplicationDeploymentRequest({ appName: project.name });
const { registryRecordId, registryRecordData } = await this.registry.createApplicationDeploymentRequest({ appName: project.name });
await this.db.updateProjectById(project.id, {
recordId,
recordData
registryRecordId,
registryRecordData
});
return project;
+20 -20
View File
@@ -7,8 +7,8 @@
"status": "Building",
"environment": "Production",
"isCurrent": true,
"recordId": "qbafyrehvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "qbafyrehvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "main",
"commitHash": "testXyz",
"url": "testProject-ffhae3zq.snowball.xyz"
@@ -21,8 +21,8 @@
"status": "Ready",
"environment": "Preview",
"isCurrent": false,
"recordId": "wbafyreihvzya6ovp4yfpkqnddkui2iw7thbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "wbafyreihvzya6ovp4yfpkqnddkui2iw7thbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "test",
"commitHash": "testXyz",
"url": "testProject-vehagei8.snowball.xyz"
@@ -35,8 +35,8 @@
"status": "Error",
"environment": "Development",
"isCurrent": false,
"recordId": "ebafyreihvzya6ovp4yfpkqnddkui2iw7t6bhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "ebafyreihvzya6ovp4yfpkqnddkui2iw7t6bhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "test",
"commitHash": "testXyz",
"url": "testProject-qmgekyte.snowball.xyz"
@@ -49,8 +49,8 @@
"status": "Ready",
"environment": "Production",
"isCurrent": false,
"recordId": "rbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhw74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "rbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhw74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "prod",
"commitHash": "testXyz",
"url": "testProject-f8wsyim6.snowball.xyz"
@@ -63,8 +63,8 @@
"status": "Building",
"environment": "Production",
"isCurrent": true,
"recordId": "tbafyreihvzya6ovp4yfpqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "tbafyreihvzya6ovp4yfpqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "main",
"commitHash": "testXyz",
"url": "testProject-2-eO8cckxk.snowball.xyz"
@@ -77,8 +77,8 @@
"status": "Ready",
"environment": "Preview",
"isCurrent": false,
"recordId": "ybafyreihvzya6ovp4yfpkqnddkui2iw7t6bhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "ybafyreihvzya6ovp4yfpkqnddkui2iw7t6bhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "test",
"commitHash": "testXyz",
"url": "testProject-2-yaq0t5yw.snowball.xyz"
@@ -91,8 +91,8 @@
"status": "Error",
"environment": "Development",
"isCurrent": false,
"recordId": "ubafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvfhrowoi",
"recordData": {},
"registryRecordId": "ubafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvfhrowoi",
"registryRecordData": {},
"branch": "test",
"commitHash": "testXyz",
"url": "testProject-2-hwwr6sbx.snowball.xyz"
@@ -105,8 +105,8 @@
"status": "Building",
"environment": "Production",
"isCurrent": true,
"recordId": "ibayreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "ibayreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "main",
"commitHash": "testXyz",
"url": "iglootools-ndxje48a.snowball.xyz"
@@ -119,8 +119,8 @@
"status": "Ready",
"environment": "Preview",
"isCurrent": false,
"recordId": "obafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "obafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"branch": "test",
"commitHash": "testXyz",
"url": "iglootools-gtgpgvei.snowball.xyz"
@@ -133,8 +133,8 @@
"status": "Error",
"environment": "Development",
"isCurrent": false,
"recordId": "pbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowo",
"recordData": {},
"registryRecordId": "pbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowo",
"registryRecordData": {},
"branch": "test",
"commitHash": "testXyz",
"url": "iglootools-b4bpthjr.snowball.xyz"
+10 -10
View File
@@ -10,8 +10,8 @@
"framework": "test",
"webhooks": [],
"icon": "",
"recordId": "hbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "hbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"subDomain": "testProject.snowball.xyz"
},
{
@@ -25,8 +25,8 @@
"framework": "test-2",
"webhooks": [],
"icon": "",
"recordId": "gbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "gbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"subDomain": "testProject-2.snowball.xyz"
},
{
@@ -40,8 +40,8 @@
"framework": "test-3",
"webhooks": [],
"icon": "",
"recordId": "ebafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "ebafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"subDomain": "iglootools.snowball.xyz"
},
{
@@ -55,8 +55,8 @@
"framework": "test-4",
"webhooks": [],
"icon": "",
"recordId": "qbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "qbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"subDomain": "iglootools-2.snowball.xyz"
},
{
@@ -70,8 +70,8 @@
"framework": "test-5",
"webhooks": [],
"icon": "",
"recordId": "xbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"recordData": {},
"registryRecordId": "xbafyreihvzya6ovp4yfpkqnddkui2iw7t6hbhwq74lbqs7bhobvmfhrowoi",
"registryRecordData": {},
"subDomain": "snowball-2.snowball.xyz"
}
]