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