• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

teableio / teable / 10315240697

09 Aug 2024 07:14AM CUT coverage: 82.671% (-0.004%) from 82.675%
10315240697

Pull #807

github

web-flow
Merge 5c2c3e070 into 7701966d5
Pull Request #807: feat: new isUnrestricted parameter returned by base query interface

4399 of 4620 branches covered (95.22%)

2 of 7 new or added lines in 2 files covered. (28.57%)

1 existing line in 1 file now uncovered.

29292 of 35432 relevant lines covered (82.67%)

1242.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

71.43
/apps/nestjs-backend/src/features/base/base.controller.ts
1
/* eslint-disable sonarjs/no-duplicate-string */
4✔
2
import { Body, Controller, Delete, Get, Param, Patch, Post, Put, Query } from '@nestjs/common';
4✔
3
import {
4✔
4
  createBaseRoSchema,
4✔
5
  duplicateBaseRoSchema,
4✔
6
  ICreateBaseRo,
4✔
7
  IUpdateBaseRo,
4✔
8
  updateBaseRoSchema,
4✔
9
  IDuplicateBaseRo,
4✔
10
  createBaseFromTemplateRoSchema,
4✔
11
  ICreateBaseFromTemplateRo,
4✔
12
  updateOrderRoSchema,
4✔
13
  IUpdateOrderRo,
4✔
14
  baseQuerySchemaRo,
4✔
15
  IBaseQuerySchemaRo,
4✔
16
} from '@teable/openapi';
4✔
17
import type {
4✔
18
  ICreateBaseVo,
4✔
19
  IDbConnectionVo,
4✔
20
  IGetBaseAllVo,
4✔
21
  IGetBasePermissionVo,
4✔
22
  IGetBaseVo,
4✔
23
  IUpdateBaseVo,
4✔
24
  ListBaseCollaboratorVo,
4✔
25
} from '@teable/openapi';
4✔
26
import { EmitControllerEvent } from '../../event-emitter/decorators/emit-controller-event.decorator';
4✔
27
import { Events } from '../../event-emitter/events';
4✔
28
import { ZodValidationPipe } from '../../zod.validation.pipe';
4✔
29
import { Permissions } from '../auth/decorators/permissions.decorator';
4✔
30
import { ResourceMeta } from '../auth/decorators/resource_meta.decorator';
4✔
31
import { TokenAccess } from '../auth/decorators/token.decorator';
4✔
32
import { CollaboratorService } from '../collaborator/collaborator.service';
4✔
33
import { BaseQueryService } from './base-query/base-query.service';
4✔
34
import { BaseService } from './base.service';
4✔
35
import { DbConnectionService } from './db-connection.service';
4✔
36

4✔
37
@Controller('api/base/')
4✔
38
export class BaseController {
4✔
39
  constructor(
78✔
40
    private readonly baseService: BaseService,
78✔
41
    private readonly dbConnectionService: DbConnectionService,
78✔
42
    private readonly collaboratorService: CollaboratorService,
78✔
43
    private readonly baseQueryService: BaseQueryService
78✔
44
  ) {}
78✔
45

78✔
46
  @Post()
78✔
47
  @Permissions('base|create')
25✔
48
  @ResourceMeta('spaceId', 'body')
25✔
49
  @EmitControllerEvent(Events.BASE_CREATE)
25✔
50
  async createBase(
25✔
51
    @Body(new ZodValidationPipe(createBaseRoSchema))
25✔
52
    createBaseRo: ICreateBaseRo
25✔
53
  ): Promise<ICreateBaseVo> {
25✔
54
    return await this.baseService.createBase(createBaseRo);
25✔
55
  }
25✔
56

78✔
57
  @Post('duplicate')
78✔
58
  @Permissions('base|create')
5✔
59
  @ResourceMeta('spaceId', 'body')
5✔
60
  @EmitControllerEvent(Events.BASE_CREATE)
5✔
61
  async duplicateBase(
5✔
62
    @Body(new ZodValidationPipe(duplicateBaseRoSchema))
5✔
63
    duplicateBaseRo: IDuplicateBaseRo
5✔
64
  ): Promise<ICreateBaseRo> {
5✔
65
    return await this.baseService.duplicateBase(duplicateBaseRo);
5✔
66
  }
5✔
67

78✔
68
  @Post('create-from-template')
78✔
69
  @Permissions('base|create')
×
70
  @ResourceMeta('spaceId', 'body')
×
71
  @EmitControllerEvent(Events.BASE_CREATE)
×
72
  async createBaseFromTemplate(
×
73
    @Body(new ZodValidationPipe(createBaseFromTemplateRoSchema))
×
74
    createBaseFromTemplateRo: ICreateBaseFromTemplateRo
×
75
  ): Promise<ICreateBaseVo> {
×
76
    return await this.baseService.createBaseFromTemplate(createBaseFromTemplateRo);
×
77
  }
×
78

78✔
79
  @Patch(':baseId')
78✔
80
  @Permissions('base|update')
×
81
  @EmitControllerEvent(Events.BASE_UPDATE)
×
82
  async updateBase(
×
83
    @Param('baseId') baseId: string,
×
84
    @Body(new ZodValidationPipe(updateBaseRoSchema))
×
85
    updateBaseRo: IUpdateBaseRo
×
86
  ): Promise<IUpdateBaseVo> {
×
87
    return await this.baseService.updateBase(baseId, updateBaseRo);
×
88
  }
×
89

78✔
90
  @Put(':baseId/order')
78✔
91
  @Permissions('base|update')
8✔
92
  async updateOrder(
8✔
93
    @Param('baseId') baseId: string,
8✔
94
    @Body(new ZodValidationPipe(updateOrderRoSchema)) updateOrderRo: IUpdateOrderRo
8✔
95
  ) {
8✔
96
    return await this.baseService.updateOrder(baseId, updateOrderRo);
8✔
97
  }
8✔
98

78✔
99
  @Permissions('base|read')
78✔
100
  @Get(':baseId')
×
101
  async getBaseById(@Param('baseId') baseId: string): Promise<IGetBaseVo> {
×
102
    return await this.baseService.getBaseById(baseId);
×
103
  }
×
104

78✔
105
  @Get('access/all')
78✔
NEW
106
  async getAllBase(): Promise<IGetBaseAllVo> {
×
NEW
107
    return this.baseService.getAllBaseList();
×
UNCOV
108
  }
×
109

78✔
110
  @Get('access/list')
78✔
111
  @TokenAccess()
×
112
  async getAccessBase(): Promise<{ id: string; name: string }[]> {
×
113
    return this.baseService.getAccessBaseList();
×
114
  }
×
115

78✔
116
  @Delete(':baseId')
78✔
117
  @Permissions('base|delete')
19✔
118
  @EmitControllerEvent(Events.BASE_DELETE)
19✔
119
  async deleteBase(@Param('baseId') baseId: string) {
19✔
120
    return await this.baseService.deleteBase(baseId);
19✔
121
  }
19✔
122

78✔
123
  @Permissions('base|db_connection')
78✔
124
  @Post(':baseId/connection')
×
125
  async createDbConnection(@Param('baseId') baseId: string): Promise<IDbConnectionVo> {
×
126
    return await this.dbConnectionService.create(baseId);
×
127
  }
×
128

78✔
129
  @Permissions('base|db_connection')
78✔
130
  @Get(':baseId/connection')
×
131
  async getDBConnection(@Param('baseId') baseId: string): Promise<IDbConnectionVo | null> {
×
132
    return await this.dbConnectionService.retrieve(baseId);
×
133
  }
×
134

78✔
135
  @Permissions('base|db_connection')
78✔
136
  @Delete(':baseId/connection')
×
137
  async deleteDbConnection(@Param('baseId') baseId: string) {
×
138
    await this.dbConnectionService.remove(baseId);
×
139
    return null;
×
140
  }
×
141

78✔
142
  @Permissions('base|read')
78✔
143
  @Get(':baseId/collaborators')
2✔
144
  async listCollaborator(@Param('baseId') baseId: string): Promise<ListBaseCollaboratorVo> {
2✔
145
    return await this.collaboratorService.getListByBase(baseId);
2✔
146
  }
2✔
147

78✔
148
  @Permissions('base|read')
78✔
149
  @Get(':baseId/permission')
×
150
  async getPermission(@Param('baseId') baseId: string): Promise<IGetBasePermissionVo> {
×
151
    return await this.baseService.getPermission(baseId);
×
152
  }
×
153

78✔
154
  @Get(':baseId/query')
78✔
155
  async sqlQuery(
28✔
156
    @Param('baseId') baseId: string,
28✔
157
    @Query(new ZodValidationPipe(baseQuerySchemaRo)) query: IBaseQuerySchemaRo
28✔
158
  ) {
28✔
159
    return await this.baseQueryService.baseQuery(baseId, query.query);
28✔
160
  }
28✔
161
}
78✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc