All files / lib/backend-operations/appsync-operations/helpers helper-schema.js

90.32% Statements 28/31
66.67% Branches 4/6
100% Functions 4/4
89.66% Lines 26/29

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 54 55 56 57 58 59 60 61 62 63 64 65 66 67                          25x 25x 25x 25x 25x 25x 25x       2x 2x   2x       2x 2x 2x     2x       2x 12x 12x   2x 2x   2x 2x 6x 2x 2x             2x           25x      
/* 
 * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 *
 *     http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
*/
"use strict";
const os = require('os')
const awsmobilejsConstant = require('../../../utils/awsmobilejs-constant.js')
const DIFF = awsmobilejsConstant.DiffMark
const CREATE = awsmobilejsConstant.DiffMark_Create
const UPDATE = awsmobilejsConstant.DiffMark_Update
const NONE = awsmobilejsConstant.DiffMark_None
const DELETE = awsmobilejsConstant.DiffMark_Delete
 
function diff(appsyncUpdateHandle){
    let result
    let currentSchema = appsyncUpdateHandle.currentAppSyncInfo.schema
    let devSchema = appsyncUpdateHandle.devAppSyncInfo.schema
 
    Iif(schemaEqual(devSchema, currentSchema)){
        devSchema[DIFF] = NONE
        currentSchema[DIFF] = NONE
    }else{
        devSchema[DIFF] = UPDATE
        currentSchema[DIFF] = UPDATE
        result = devSchema
    }
 
    return result
}
 
function schemaEqual(devSchema, currentSchema){
    let result = true
   let devSchemaLines = devSchema.definition.split(os.EOL).filter(line=>line.trim().length>0)
   let currentSchemaLines = currentSchema.definition.split(os.EOL).filter(line=>line.trim().length>0)
 
   let devLineCount = devSchemaLines.length
   let currentLineCount = currentSchemaLines.length
 
   Eif(devLineCount == currentLineCount){
        for(let i=0; i<devLineCount; i++){
            if(devSchemaLines[i]!=currentSchemaLines[i]){
                result = false
                break
            }
        }
   }else{
       result = false
   }
 
   return result
}
 
 
 
 
module.exports = {
    diff
}