UNPKG

@calljmp/cli

Version:
2 lines (1 loc) 2.88 kB
"use strict";var h=Object.create;var n=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var T=(r,e)=>{for(var t in e)n(r,t,{get:e[t],enumerable:!0})},u=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of w(e))!b.call(r,o)&&o!==t&&n(r,o,{get:()=>e[o],enumerable:!(s=f(e,o))||s.enumerable});return r};var p=(r,e,t)=>(t=r!=null?h(y(r)):{},u(e||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r)),$=r=>u(n({},"__esModule",{value:!0}),r);var _={};T(_,{Database:()=>j});module.exports=$(_);var a=p(require("node-fetch")),d=require("fs"),l=p(require("fs/promises"));class j{constructor(e){this._config=e}async query(e,t=[]){const s=await(0,a.default)(`${this._config.baseUrl}/project/${this._config.projectId}/database/query`,{method:"POST",headers:{Authorization:`Bearer ${this._config.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({sql:e,params:t})});if(!s.ok)throw new Error(`Failed to execute query: ${s.statusText}`);return await s.json()}async retrieveSchema(){return(await this.query('SELECT sql FROM sqlite_master WHERE name NOT LIKE "sqlite_%" AND name NOT LIKE "_cf_%"')).rows.map(s=>s.sql)}async migrate({etag:e}){const t=await(0,a.default)(`${this._config.baseUrl}/project/${this._config.projectId}/database/migrate`,{method:"POST",headers:{Authorization:`Bearer ${this._config.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({etag:e})});if(!t.ok)throw new Error(`Failed to execute query: ${t.statusText}`);return await t.json()}async ingest({etag:e,file:t,filename:s,uploadUrl:o}){const m=typeof t=="string"?(await l.default.stat(t)).size:t.size,i=await(0,a.default)(o,{method:"PUT",headers:{"Content-Length":m.toString()},body:typeof t=="string"?(0,d.createReadStream)(t):t});if(!i.ok)throw new Error(`Failed to upload file: ${i.statusText}`);const c=i.headers.get("etag");if(!c)throw new Error("No ETag returned from upload");if(e!==c.replace(/^"|"$/g,""))throw new Error(`ETag mismatch: expected ${e}, got ${c}`);const g=await(0,a.default)(`${this._config.baseUrl}/project/${this._config.projectId}/database/migrate`,{method:"PUT",headers:{Authorization:`Bearer ${this._config.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({etag:e,filename:s})});if(!g.ok)throw new Error(`Failed to execute query: ${g.statusText}`);return await g.json()}async migrationStatus({bookmark:e}){const t=await(0,a.default)(`${this._config.baseUrl}/project/${this._config.projectId}/database/migration/status`,{method:"POST",headers:{Authorization:`Bearer ${this._config.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({bookmark:e})});if(!t.ok)throw new Error(`Failed to get migration status: ${t.statusText}`);return await t.json()}}0&&(module.exports={Database});