All files / src/objects data_definition.ts

80% Statements 16/20
62.5% Branches 5/8
66.67% Functions 6/9
78.95% Lines 15/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 541x     1x     1x 2x     1x                     1x                         2x 2x       1x       1x 2x 1x 1x 1x     1x      
import {VoidType} from "../abap/types/basic";
import {AbstractType} from "../abap/types/basic/_abstract_type";
import {IRegistry} from "../_iregistry";
import {AbstractObject} from "./_abstract_object";
import {IParseResult} from "./_iobject";
 
export class DataDefinition extends AbstractObject {
  private sqlViewName: string | undefined = undefined;
 
  public getType(): string {
    return "DDLS";
  }
 
  public getAllowedNaming() {
    return {
      maxLength: 40,
      allowNamespace: true,
    };
  }
 
  public getSQLViewName(): string | undefined {
    return this.sqlViewName;
  }
 
  public getDescription(): string | undefined {
    // todo
    return undefined;
  }
 
  public parseType(_reg: IRegistry): AbstractType {
    return new VoidType("DDLS:todo");
  }
 
  public setDirty(): void {
    this.sqlViewName = undefined;
    super.setDirty();
  }
 
  public parse(): IParseResult {
    Iif (this.isDirty() === false) {
      return {updated: false, runtime: 0};
    }
 
    this.sqlViewName = undefined;
    const asddls = this.getFiles().find(f => f.getFilename().endsWith(".asddls"));
    const match = asddls?.getRaw().match(/@AbapCatalog\.sqlViewName: '(\w+)'/);
    Eif (match) {
      this.sqlViewName = match[1].toUpperCase();
    }
 
    return {updated: true, runtime: 0};
  }
}