(target: dataform.ITarget)
| 247 | } |
| 248 | |
| 249 | public async table(target: dataform.ITarget): Promise<dataform.ITableMetadata> { |
| 250 | const metadata = await this.getMetadata(target); |
| 251 | |
| 252 | if (!metadata) { |
| 253 | return null; |
| 254 | } |
| 255 | |
| 256 | // Database isn't checked for equality as it's not always presented to the compiled graph, but |
| 257 | // IS always available in the warehouse. |
| 258 | if ( |
| 259 | metadata.tableReference.datasetId !== target.schema || |
| 260 | metadata.tableReference.tableId !== target.name |
| 261 | ) { |
| 262 | const metadataTarget = { |
| 263 | database: metadata.tableReference.projectId, |
| 264 | schema: metadata.tableReference.datasetId, |
| 265 | name: metadata.tableReference.tableId |
| 266 | }; |
| 267 | throw new Error( |
| 268 | `Target ${JSON.stringify(metadataTarget)} does not match requested target ${JSON.stringify( |
| 269 | target |
| 270 | )}.` |
| 271 | ); |
| 272 | } |
| 273 | |
| 274 | return dataform.TableMetadata.create({ |
| 275 | type: |
| 276 | metadata.type === "TABLE" |
| 277 | ? dataform.TableMetadata.Type.TABLE |
| 278 | : metadata.type === "VIEW" |
| 279 | ? dataform.TableMetadata.Type.VIEW |
| 280 | : dataform.TableMetadata.Type.UNKNOWN, |
| 281 | target, |
| 282 | fields: metadata.schema.fields?.map(field => convertField(field)), |
| 283 | lastUpdatedMillis: Long.fromString(metadata.lastModifiedTime), |
| 284 | description: metadata.description, |
| 285 | labels: metadata.labels, |
| 286 | bigquery: { |
| 287 | hasStreamingBuffer: !!metadata.streamingBuffer |
| 288 | } |
| 289 | }); |
| 290 | } |
| 291 | |
| 292 | public async deleteTable(target: dataform.ITarget): Promise<void> { |
| 293 | await this.getClient(target.database) |
no test coverage detected