@onivoro/server-aws-redshift 22.0.7 → 22.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,7 +31,7 @@ let ServerAwsRedshiftDataModule = ServerAwsRedshiftDataModule_1 = class ServerAw
31
31
  },
32
32
  {
33
33
  provide: client_redshift_serverless_1.RedshiftServerlessClient,
34
- useFactory: () => redshiftDataClient
34
+ useFactory: () => redshiftServerlessClient
35
35
  ? redshiftServerlessClient
36
36
  : redshiftServerlessClient = new client_redshift_serverless_1.RedshiftServerlessClient(from(config))
37
37
  },
@@ -36,4 +36,8 @@ export declare class RedshiftDataService {
36
36
  database: string;
37
37
  workgroupName: string;
38
38
  }, Sql: string): Promise<(string | number)[][]>;
39
+ getAssociatedIAmRolesByWorkgroup(_: {
40
+ database: string;
41
+ workgroupName: string;
42
+ }): Promise<(string | number)[][]>;
39
43
  }
@@ -193,6 +193,35 @@ let RedshiftDataService = class RedshiftDataService {
193
193
  throw error;
194
194
  }
195
195
  }
196
+ async getAssociatedIAmRolesByWorkgroup(_) {
197
+ try {
198
+ const query = `
199
+ SELECT
200
+ g.groname as role_name,
201
+ u.usename as member_name,
202
+ g.grosysid as role_id,
203
+ g.groowner as owner_id,
204
+ CASE WHEN pg_has_role(u.usename, g.groname, 'MEMBER') THEN true ELSE false END as is_member
205
+ FROM pg_group g
206
+ LEFT JOIN pg_user u ON u.usesysid = ANY(g.grolist)
207
+ WHERE EXISTS (
208
+ SELECT 1
209
+ FROM svv_redshift_databases d
210
+ WHERE d.database_name = current_database()
211
+ AND d.workgroup_name = $1
212
+ )
213
+ ORDER BY g.groname, u.usename;
214
+ `;
215
+ return await this.query(_, query);
216
+ }
217
+ catch (error) {
218
+ if (error instanceof Error) {
219
+ console.error(`Error getting workgroup roles: ${error.message}`);
220
+ throw error;
221
+ }
222
+ throw new Error('An unknown error occurred');
223
+ }
224
+ }
196
225
  };
197
226
  exports.RedshiftDataService = RedshiftDataService;
198
227
  exports.RedshiftDataService = RedshiftDataService = __decorate([
@@ -31,7 +31,7 @@ let ServerAwsRedshiftDataModule = ServerAwsRedshiftDataModule_1 = class ServerAw
31
31
  },
32
32
  {
33
33
  provide: client_redshift_serverless_1.RedshiftServerlessClient,
34
- useFactory: () => redshiftDataClient
34
+ useFactory: () => redshiftServerlessClient
35
35
  ? redshiftServerlessClient
36
36
  : redshiftServerlessClient = new client_redshift_serverless_1.RedshiftServerlessClient(from(config))
37
37
  },
@@ -36,4 +36,8 @@ export declare class RedshiftDataService {
36
36
  database: string;
37
37
  workgroupName: string;
38
38
  }, Sql: string): Promise<(string | number)[][]>;
39
+ getAssociatedIAmRolesByWorkgroup(_: {
40
+ database: string;
41
+ workgroupName: string;
42
+ }): Promise<(string | number)[][]>;
39
43
  }
@@ -193,6 +193,35 @@ let RedshiftDataService = class RedshiftDataService {
193
193
  throw error;
194
194
  }
195
195
  }
196
+ async getAssociatedIAmRolesByWorkgroup(_) {
197
+ try {
198
+ const query = `
199
+ SELECT
200
+ g.groname as role_name,
201
+ u.usename as member_name,
202
+ g.grosysid as role_id,
203
+ g.groowner as owner_id,
204
+ CASE WHEN pg_has_role(u.usename, g.groname, 'MEMBER') THEN true ELSE false END as is_member
205
+ FROM pg_group g
206
+ LEFT JOIN pg_user u ON u.usesysid = ANY(g.grolist)
207
+ WHERE EXISTS (
208
+ SELECT 1
209
+ FROM svv_redshift_databases d
210
+ WHERE d.database_name = current_database()
211
+ AND d.workgroup_name = $1
212
+ )
213
+ ORDER BY g.groname, u.usename;
214
+ `;
215
+ return await this.query(_, query);
216
+ }
217
+ catch (error) {
218
+ if (error instanceof Error) {
219
+ console.error(`Error getting workgroup roles: ${error.message}`);
220
+ throw error;
221
+ }
222
+ throw new Error('An unknown error occurred');
223
+ }
224
+ }
196
225
  };
197
226
  exports.RedshiftDataService = RedshiftDataService;
198
227
  exports.RedshiftDataService = RedshiftDataService = __decorate([
@@ -36,4 +36,8 @@ export declare class RedshiftDataService {
36
36
  database: string;
37
37
  workgroupName: string;
38
38
  }, Sql: string): Promise<(string | number)[][]>;
39
+ getAssociatedIAmRolesByWorkgroup(_: {
40
+ database: string;
41
+ workgroupName: string;
42
+ }): Promise<(string | number)[][]>;
39
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onivoro/server-aws-redshift",
3
- "version": "22.0.7",
3
+ "version": "22.0.8",
4
4
  "repository": {
5
5
  "url": "git+https://github.com/onivoro/server-aws-redshift.git"
6
6
  },