@arcane-utils/datastore
Version:
Datastore helper functions.
2 lines • 3.71 kB
JavaScript
var T=Object.create;var m=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var w=(e,t)=>{for(var n in t)m(e,n,{get:t[n],enumerable:!0})},y=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of X(t))!A.call(e,r)&&r!==n&&m(e,r,{get:()=>t[r],enumerable:!(o=R(t,r))||o.enumerable});return e};var F=(e,t,n)=>(n=e!=null?T(M(e)):{},y(t||!e||!e.__esModule?m(n,"default",{value:e,enumerable:!0}):n,e)),K=e=>y(m({},"__esModule",{value:!0}),e);var V={};w(V,{DATA_ALERT_KIND:()=>q,DATA_EXPORT_KIND:()=>z,DATA_INGESTION_KIND:()=>B,DATA_PROCESSING_KIND:()=>Y,EXPORT_EXCLUDE_FROM_INDEXES:()=>j,EXPORT_EXCLUDE_FROM_INDEXES_CLASSIC:()=>O,INGESTION_EXCLUDE_FROM_INDEXES:()=>L,PROCESSING_EXCLUDE_FROM_INDEXES:()=>v,PROTECTION_EXCLUDE_FROM_INDEXES:()=>U,PROTECTION_KIND:()=>k,getDatastoreClient:()=>H,getEntity:()=>Q,getEntityExcludeFromIndexes:()=>g,saveEntity:()=>J});module.exports=K(V);var u=F(require("promise-retry"),1),I=require("lodash"),S=require("@google-cloud/datastore"),N=require("@arcane-utils/error"),D=["execution_info","parameters"],P=["parameters","name","is_archived","latest_exec","latest_load","execution_info","headers","meta","types_override","data_pre_preparation_enabled"],b=[...D,"headers","meta","product_evolution_info"],L={classic:P,embedded:b},$=["name","parameters","sleepTime","latestExec","execution_info"],h=[...D],v={classic:$,embedded:h},O=["parameters","name","export_format","feed_setup","latest_exec","execution_info","dataflow_job_status","dataflow_job_id","execution_time"],G=[...D,"feed_setup","execution_time"],j={classic:O,embedded:G},U={classic:["size_variation_threshold","last_modified","current_size","previous_size","notif_name"]},z="smart-feeds-data-exports",B="smart-feeds-data-ingestions",Y="smart-feeds-data-processings",k="protection-file-size",q="alert-file-change",f=(e,t)=>Array.isArray(e)?[...new Set(e.flatMap(n=>f(n,`${t}[]`)))]:typeof e=="object"&&e!==null?[...new Set([t,...Object.entries(e).flatMap(([n,o])=>f(o,`${t}.${n}`))])]:[t],H=(e,t)=>new S.Datastore({projectId:e,keyFilename:t}),g=(e,t,n)=>t.concat(n.flatMap(r=>f(e[r],r))),J=async(e,t,n,o,r=[],l=[],i=console)=>(0,u.default)(async(c,_)=>{let a=(0,I.cloneDeep)(n);i.info(`Saving updated properties for entity ${t}`);let d=o.transaction();try{await d.run();let[E]=await d.get({kind:e,id:t});if(!E)return Promise.resolve(`Entity ${t} was deleted`);let s=E;Object.keys(a).some(p=>p==="parameters")&&(s.parameters={...s.parameters,...a.parameters},delete a.parameters),Object.keys(a).some(p=>p==="execution_info")&&(s.execution_info={...s.execution_info,...a.execution_info},delete a.execution_info),s={...s,...a};let C=g(s,r,l);d.save({key:{kind:e,id:s.id},excludeFromIndexes:C,data:s}),await d.commit();let x=`Entity ${t} was correctly updated`;return i.info(x),Promise.resolve(x)}catch(E){i.info(`Transaction failed because: ${E.message}. Attempt is ${_}. Trying again...`),c(E)}},{retries:5,factor:2,minTimeout:1e3}),Q=async(e,t,n,o=console,r=null)=>{let l=r??{kind:e,id:t};return(0,u.default)(async i=>{let c;try{[c]=await n.get(l)}catch(_){o.info(`Error while getting entity ${_}`),i(_)}if(!c)throw new N.NotFoundError(`No corresponding ${e} entity id ${t}.`);return c},{retries:5,factor:2,minTimeout:1e3})};0&&(module.exports={DATA_ALERT_KIND,DATA_EXPORT_KIND,DATA_INGESTION_KIND,DATA_PROCESSING_KIND,EXPORT_EXCLUDE_FROM_INDEXES,EXPORT_EXCLUDE_FROM_INDEXES_CLASSIC,INGESTION_EXCLUDE_FROM_INDEXES,PROCESSING_EXCLUDE_FROM_INDEXES,PROTECTION_EXCLUDE_FROM_INDEXES,PROTECTION_KIND,getDatastoreClient,getEntity,getEntityExcludeFromIndexes,saveEntity});
//# sourceMappingURL=datastore.cjs.map