Edits history of script submission #10732 for ' Create a New Database Cluster (digitalocean)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Digitalocean = {
      token: string;
    };
    /**
     * Create a New Database Cluster
     * To create a database cluster, send a POST request to `/v2/databases`.
     */
    export async function main(
      auth: Digitalocean,
      body: {
        id?: string;
        name: string;
        engine: "pg" | "mysql" | "redis" | "mongodb" | "kafka" | "opensearch";
        version?: string;
        semantic_version?: string;
        num_nodes: number;
        size: string;
        region: string;
        status?: "creating" | "online" | "resizing" | "migrating" | "forking";
        created_at?: string;
        private_network_uuid?: string;
        tags?: string[];
        db_names?: string[];
        ui_connection?: {
          uri?: string;
          host?: string;
          port?: number;
          user?: string;
          password?: string;
          ssl?: false | true;
        } & {};
        connection?: {
          uri?: string;
          database?: string;
          host?: string;
          port?: number;
          user?: string;
          password?: string;
          ssl?: false | true;
        } & {};
        private_connection?: {
          uri?: string;
          database?: string;
          host?: string;
          port?: number;
          user?: string;
          password?: string;
          ssl?: false | true;
        } & {};
        standby_connection?: {
          uri?: string;
          database?: string;
          host?: string;
          port?: number;
          user?: string;
          password?: string;
          ssl?: false | true;
        } & {};
        standby_private_connection?: {
          uri?: string;
          database?: string;
          host?: string;
          port?: number;
          user?: string;
          password?: string;
          ssl?: false | true;
        } & {};
        users?: {
          name: string;
          role?: "primary" | "normal";
          password?: string;
          access_cert?: string;
          access_key?: string;
          mysql_settings?: {
            auth_plugin: "mysql_native_password" | "caching_sha2_password";
          };
          settings?: {
            pg_allow_replication?: false | true;
            opensearch_acl?: {
              index?: string;
              permission?: "deny" | "admin" | "read" | "readwrite" | "write";
            }[];
            acl?: {
              id?: string;
              topic: string;
              permission: "admin" | "consume" | "produce" | "produceconsume";
            }[];
          };
        }[];
        maintenance_window?: {
          day: string;
          hour: string;
          pending?: false | true;
          description?: string[];
        } & {};
        project_id?: string;
        rules?: {
          uuid?: string;
          cluster_uuid?: string;
          type: "droplet" | "k8s" | "ip_addr" | "tag" | "app";
          value: string;
          created_at?: string;
        }[];
        version_end_of_life?: string;
        version_end_of_availability?: string;
        storage_size_mib?: number;
        metrics_endpoints?: { host?: string; port?: number }[];
      } & {
        backup_restore?: { database_name: string; backup_created_at?: string };
      },
    ) {
      const url = new URL(`https://api.digitalocean.com/v2/databases`);
    
      const response = await fetch(url, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Bearer " + auth.token,
        },
        body: JSON.stringify(body),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 537 days ago