mirror of
https://github.com/dadosfera/maestro.git
synced 2026-11-05 00:59:08 +00:00
Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ac0a8a79f | ||
|
|
285de97375 | ||
|
|
e2a7d2b92b | ||
|
|
da23ad76db | ||
|
|
55b0961b82 | ||
|
|
d3c5c0fa63 | ||
|
|
5dbc644d1d | ||
|
|
8eddb9e1bf | ||
|
|
a18bdccc09 | ||
|
|
b27298501d | ||
|
|
33ebc91826 | ||
|
|
6948156693 | ||
|
|
0aaa4384c3 | ||
|
|
039c652b28 | ||
|
|
653d4f53b5 |
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
FROM node:18.17-alpine AS base_image
|
FROM node:20-alpine AS base_image
|
||||||
|
RUN npm install -g npm@latest
|
||||||
|
|
||||||
FROM base_image AS build_base
|
FROM base_image AS build_base
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
FROM node:20-alpine AS base_image
|
||||||
|
RUN npm install -g npm@latest
|
||||||
|
|
||||||
|
FROM base_image AS build_base
|
||||||
|
WORKDIR /app
|
||||||
|
RUN apk update
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
aws-cli \
|
||||||
|
chromium \
|
||||||
|
nss \
|
||||||
|
freetype \
|
||||||
|
harfbuzz \
|
||||||
|
ca-certificates \
|
||||||
|
ttf-freefont
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
||||||
|
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
||||||
|
|
||||||
|
|
||||||
|
# Local build with secrets
|
||||||
|
FROM build_base AS build
|
||||||
|
RUN --mount=type=secret,id=aws,target=/root/.aws/credentials \
|
||||||
|
aws codeartifact login --tool npm --namespace @dadosfera --repository dadosfera-npm --domain dadosfera --domain-owner 611330257153 --region us-east-1
|
||||||
|
RUN npm ci
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
|
||||||
|
FROM base_image
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=build /app/dist ./dist
|
||||||
|
COPY --from=build /app/node_modules ./node_modules
|
||||||
|
COPY --from=build /app/package*.json ./
|
||||||
|
RUN apk update
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
chromium \
|
||||||
|
nss \
|
||||||
|
freetype \
|
||||||
|
harfbuzz \
|
||||||
|
ca-certificates \
|
||||||
|
ttf-freefont
|
||||||
|
|
||||||
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
||||||
|
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
||||||
|
|
||||||
|
ENTRYPOINT ["npm", "run", "start:prod"]
|
||||||
+76
-7
@@ -5461,6 +5461,66 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/customers/{id}/organization-info": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "CustomersController_getOrganizationInfo",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "id",
|
||||||
|
"required": true,
|
||||||
|
"in": "path",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Organization information"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"Customers"
|
||||||
|
],
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"access-token": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"access-token": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"operationId": "CustomersController_updateOrganizationInfo",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "id",
|
||||||
|
"required": true,
|
||||||
|
"in": "path",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Organization information updated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"Customers"
|
||||||
|
],
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"access-token": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"access-token": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/catalog/data-asset/share/{id}": {
|
"/catalog/data-asset/share/{id}": {
|
||||||
"get": {
|
"get": {
|
||||||
"operationId": "ShareController_getShareDataAsset",
|
"operationId": "ShareController_getShareDataAsset",
|
||||||
@@ -8169,7 +8229,7 @@
|
|||||||
"companyName": {
|
"companyName": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"companySite": {
|
"personalSite": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"mfaStatus": {
|
"mfaStatus": {
|
||||||
@@ -8204,7 +8264,7 @@
|
|||||||
"hierarchy",
|
"hierarchy",
|
||||||
"bio",
|
"bio",
|
||||||
"companyName",
|
"companyName",
|
||||||
"companySite",
|
"personalSite",
|
||||||
"mfaStatus",
|
"mfaStatus",
|
||||||
"createdAt",
|
"createdAt",
|
||||||
"updatedAt",
|
"updatedAt",
|
||||||
@@ -8344,7 +8404,7 @@
|
|||||||
"companyName": {
|
"companyName": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"companySite": {
|
"personalSite": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"customer": {
|
"customer": {
|
||||||
@@ -8376,7 +8436,7 @@
|
|||||||
"hierarchy",
|
"hierarchy",
|
||||||
"bio",
|
"bio",
|
||||||
"companyName",
|
"companyName",
|
||||||
"companySite",
|
"personalSite",
|
||||||
"mfaStatus",
|
"mfaStatus",
|
||||||
"createdAt",
|
"createdAt",
|
||||||
"updatedAt",
|
"updatedAt",
|
||||||
@@ -8520,7 +8580,7 @@
|
|||||||
"bio": {
|
"bio": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"companySite": {
|
"personalSite": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"companyName": {
|
"companyName": {
|
||||||
@@ -8572,7 +8632,7 @@
|
|||||||
"companyName": {
|
"companyName": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"companySite": {
|
"personalSite": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"mfaStatus": {
|
"mfaStatus": {
|
||||||
@@ -8600,7 +8660,7 @@
|
|||||||
"hierarchy",
|
"hierarchy",
|
||||||
"bio",
|
"bio",
|
||||||
"companyName",
|
"companyName",
|
||||||
"companySite",
|
"personalSite",
|
||||||
"mfaStatus",
|
"mfaStatus",
|
||||||
"createdAt",
|
"createdAt",
|
||||||
"updatedAt",
|
"updatedAt",
|
||||||
@@ -9649,6 +9709,9 @@
|
|||||||
"public",
|
"public",
|
||||||
"private"
|
"private"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"docs": {
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
@@ -9903,6 +9966,9 @@
|
|||||||
"public",
|
"public",
|
||||||
"private"
|
"private"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"docs": {
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
@@ -9942,6 +10008,9 @@
|
|||||||
},
|
},
|
||||||
"embed": {
|
"embed": {
|
||||||
"$ref": "#/components/schemas/EmbedObject"
|
"$ref": "#/components/schemas/EmbedObject"
|
||||||
|
},
|
||||||
|
"docs": {
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
|
|||||||
Generated
+2122
-2991
File diff suppressed because it is too large
Load Diff
+9
-3
@@ -35,7 +35,7 @@
|
|||||||
"@aws-sdk/signature-v4": "^3.370.0",
|
"@aws-sdk/signature-v4": "^3.370.0",
|
||||||
"@dadosfera/dadosfera-logs": "^1.0.0-beta.4",
|
"@dadosfera/dadosfera-logs": "^1.0.0-beta.4",
|
||||||
"@dadosfera/protospack": "2.5.3",
|
"@dadosfera/protospack": "2.5.3",
|
||||||
"@dadosfera/protospack-v2": "3.38.0-beta.18",
|
"@dadosfera/protospack-v2": "^3.38.0-beta.25",
|
||||||
"@grpc/grpc-js": "^1.9.3",
|
"@grpc/grpc-js": "^1.9.3",
|
||||||
"@grpc/proto-loader": "^0.7.9",
|
"@grpc/proto-loader": "^0.7.9",
|
||||||
"@nestjs/cli": "^9.5.0",
|
"@nestjs/cli": "^9.5.0",
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
"@nestjs/schematics": "^9.2.0",
|
"@nestjs/schematics": "^9.2.0",
|
||||||
"@nestjs/swagger": "^6.3.0",
|
"@nestjs/swagger": "^6.3.0",
|
||||||
"@nestjs/testing": "^9.4.3",
|
"@nestjs/testing": "^9.4.3",
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.30.2",
|
||||||
"cache-manager": "^5.1.4",
|
"cache-manager": "^5.1.4",
|
||||||
"cache-manager-ioredis-yet": "^1.1.0",
|
"cache-manager-ioredis-yet": "^1.1.0",
|
||||||
"class-transformer": "^0.5.1",
|
"class-transformer": "^0.5.1",
|
||||||
@@ -80,7 +80,13 @@
|
|||||||
"swagger-ui-express": "^4.6.3"
|
"swagger-ui-express": "^4.6.3"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"multer": "1.4.5-lts.1"
|
"multer": "2.0.2",
|
||||||
|
"form-data": "^4.0.4",
|
||||||
|
"body-parser": "^1.20.3",
|
||||||
|
"cross-spawn": "^7.0.5",
|
||||||
|
"glob": "^10.5.0",
|
||||||
|
"path-to-regexp": "^3.3.0",
|
||||||
|
"semver": "^7.5.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/cache-manager": "^4.0.6",
|
"@types/cache-manager": "^4.0.6",
|
||||||
|
|||||||
@@ -98,6 +98,8 @@ export class IDataAsset {
|
|||||||
embed?: EmbedObject;
|
embed?: EmbedObject;
|
||||||
@ApiPropertyOptional({ enum: DataAssetShareType })
|
@ApiPropertyOptional({ enum: DataAssetShareType })
|
||||||
share_type?: DataAssetShareType;
|
share_type?: DataAssetShareType;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
docs?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class IOneDataAsset {
|
export class IOneDataAsset {
|
||||||
@@ -200,6 +202,8 @@ export class IUpdateDataRequest {
|
|||||||
embed: EmbedObject;
|
embed: EmbedObject;
|
||||||
@ApiPropertyOptional({ enum: DataAssetShareType })
|
@ApiPropertyOptional({ enum: DataAssetShareType })
|
||||||
share_type?: DataAssetShareType;
|
share_type?: DataAssetShareType;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
docs?: string;
|
||||||
}
|
}
|
||||||
export class ICreateDataAsset implements CreateDataAssetRequest {
|
export class ICreateDataAsset implements CreateDataAssetRequest {
|
||||||
@ApiProperty()
|
@ApiProperty()
|
||||||
@@ -214,6 +218,8 @@ export class ICreateDataAsset implements CreateDataAssetRequest {
|
|||||||
location: string;
|
location: string;
|
||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
embed: EmbedObject;
|
embed: EmbedObject;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
docs: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class IPreview {
|
export class IPreview {
|
||||||
|
|||||||
@@ -136,4 +136,32 @@ export class CustomersController {
|
|||||||
const result = await this.customersService.getAccessDashboardUrl(user.customer_name, metadata);
|
const result = await this.customersService.getAccessDashboardUrl(user.customer_name, metadata);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Get(':id/organization-info')
|
||||||
|
@Authenticated()
|
||||||
|
@RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
|
||||||
|
@ApiOkResponse({ description: 'Organization information' })
|
||||||
|
async getOrganizationInfo(@Param('id') id: string) {
|
||||||
|
this.logger.info('getOrganizationInfo', { id });
|
||||||
|
return this.customersService.getOrganizationInfo(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Put(':id/organization-info')
|
||||||
|
@Authenticated()
|
||||||
|
@RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
|
||||||
|
@HttpCode(HttpStatus.OK)
|
||||||
|
@ApiOkResponse({ description: 'Organization information updated' })
|
||||||
|
async updateOrganizationInfo(
|
||||||
|
@Param('id') id: string,
|
||||||
|
@Body() body: {
|
||||||
|
companyName: string;
|
||||||
|
companySite: string;
|
||||||
|
domain: string;
|
||||||
|
cnpj: string;
|
||||||
|
description: string;
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
return this.customersService.updateOrganizationInfo(id, body);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,4 +223,57 @@ export class CustomersService implements OnModuleInit {
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
async updateOrganizationInfo(
|
||||||
|
customerId: string,
|
||||||
|
data: {
|
||||||
|
companyName: string;
|
||||||
|
companySite: string;
|
||||||
|
domain: string;
|
||||||
|
cnpj: string;
|
||||||
|
description: string;
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
const result = await lastValueFrom(
|
||||||
|
this.customerService.OrganizationUpdate({
|
||||||
|
customerId,
|
||||||
|
companyName: data.companyName || '',
|
||||||
|
companySite: data.companySite || '',
|
||||||
|
domain: data.domain || '',
|
||||||
|
cnpj: data.cnpj || '',
|
||||||
|
description: data.description || '',
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
} catch (err) {
|
||||||
|
if (err.details === ErrorCodes.CUSTOMER.NOT_FOUND)
|
||||||
|
throw new HttpException(err.details, HttpStatus.NOT_FOUND);
|
||||||
|
else throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getOrganizationInfo(customerId: string) {
|
||||||
|
try {
|
||||||
|
const customerResponse = await lastValueFrom(
|
||||||
|
this.customerService.CustomerFindOneById({ id: customerId })
|
||||||
|
);
|
||||||
|
|
||||||
|
const customer = customerResponse.customer;
|
||||||
|
|
||||||
|
return {
|
||||||
|
companyName: customer.companyName || '',
|
||||||
|
companySite: customer.companySite || '',
|
||||||
|
domain: customer.domain || '',
|
||||||
|
cnpj: customer.cnpj || '',
|
||||||
|
description: customer.description || ''
|
||||||
|
};
|
||||||
|
} catch (err) {
|
||||||
|
if (err.details === ErrorCodes.CUSTOMER.NOT_FOUND)
|
||||||
|
throw new HttpException(err.details, HttpStatus.NOT_FOUND);
|
||||||
|
else throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||||
|
|
||||||
|
export class OrganizationUpdateRequest {
|
||||||
|
@ApiProperty()
|
||||||
|
name: string;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
companySite: string;
|
||||||
|
@ApiProperty()
|
||||||
|
domain: string;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
info: string;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
cnpj: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class OrganizationResponse {
|
||||||
|
@ApiProperty()
|
||||||
|
name: string;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
companySite: string;
|
||||||
|
@ApiProperty()
|
||||||
|
domain: string;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
info: string;
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
cnpj: string;
|
||||||
|
}
|
||||||
@@ -43,7 +43,7 @@ export class User {
|
|||||||
@ApiProperty()
|
@ApiProperty()
|
||||||
companyName?: string;
|
companyName?: string;
|
||||||
@ApiProperty()
|
@ApiProperty()
|
||||||
companySite?: string;
|
personalSite?: string;
|
||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
customer?: Customer;
|
customer?: Customer;
|
||||||
@ApiProperty()
|
@ApiProperty()
|
||||||
@@ -117,7 +117,7 @@ export class UpdateUserReq {
|
|||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
bio?: string;
|
bio?: string;
|
||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
companySite?: string;
|
personalSite?: string;
|
||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
companyName?: string;
|
companyName?: string;
|
||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ export class UsersService implements OnModuleInit {
|
|||||||
name: updateUserDTO.name,
|
name: updateUserDTO.name,
|
||||||
bio: updateUserDTO.bio,
|
bio: updateUserDTO.bio,
|
||||||
companyName: updateUserDTO.companyName,
|
companyName: updateUserDTO.companyName,
|
||||||
companySite: updateUserDTO.companySite,
|
personalSite: updateUserDTO.personalSite,
|
||||||
customerId,
|
customerId,
|
||||||
id,
|
id,
|
||||||
metabaseUserId: undefined,
|
metabaseUserId: undefined,
|
||||||
|
|||||||
Reference in New Issue
Block a user