alchemy 0.63.0 → 0.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/bin/alchemy.js +97 -87
  2. package/bin/commands/init.ts +1 -1
  3. package/bin/services/github-workflow.ts +2 -2
  4. package/lib/alchemy.d.ts +4 -0
  5. package/lib/alchemy.d.ts.map +1 -1
  6. package/lib/alchemy.js +10 -4
  7. package/lib/alchemy.js.map +1 -1
  8. package/lib/apply.d.ts +3 -0
  9. package/lib/apply.d.ts.map +1 -1
  10. package/lib/apply.js +11 -1
  11. package/lib/apply.js.map +1 -1
  12. package/lib/cloudflare/bindings.d.ts +3 -1
  13. package/lib/cloudflare/bindings.d.ts.map +1 -1
  14. package/lib/cloudflare/bucket.d.ts +2 -1
  15. package/lib/cloudflare/bucket.d.ts.map +1 -1
  16. package/lib/cloudflare/bucket.js.map +1 -1
  17. package/lib/cloudflare/bundle/cloudflare-internal.d.ts +6 -0
  18. package/lib/cloudflare/bundle/cloudflare-internal.d.ts.map +1 -0
  19. package/lib/cloudflare/bundle/cloudflare-internal.js +39 -0
  20. package/lib/cloudflare/bundle/cloudflare-internal.js.map +1 -0
  21. package/lib/cloudflare/bundle/nodejs-builtin-modules.d.ts +2 -0
  22. package/lib/cloudflare/bundle/nodejs-builtin-modules.d.ts.map +1 -0
  23. package/lib/cloudflare/bundle/nodejs-builtin-modules.js +9 -0
  24. package/lib/cloudflare/bundle/nodejs-builtin-modules.js.map +1 -0
  25. package/lib/cloudflare/bundle/plugin-als-external.d.ts +6 -0
  26. package/lib/cloudflare/bundle/plugin-als-external.d.ts.map +1 -0
  27. package/lib/cloudflare/bundle/plugin-als-external.js +12 -0
  28. package/lib/cloudflare/bundle/plugin-als-external.js.map +1 -0
  29. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.d.ts +4 -1
  30. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.d.ts.map +1 -1
  31. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js +23 -23
  32. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js.map +1 -1
  33. package/lib/cloudflare/bundle/plugin-node-compat.d.ts +11 -0
  34. package/lib/cloudflare/bundle/plugin-node-compat.d.ts.map +1 -0
  35. package/lib/cloudflare/bundle/plugin-node-compat.js +93 -0
  36. package/lib/cloudflare/bundle/plugin-node-compat.js.map +1 -0
  37. package/lib/cloudflare/cloudflare-env-proxy.js +1 -1
  38. package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
  39. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  40. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  41. package/lib/cloudflare/d1-local-migrations.js.map +1 -1
  42. package/lib/cloudflare/durable-object-namespace.d.ts +1 -0
  43. package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
  44. package/lib/cloudflare/hyperdrive.js +1 -1
  45. package/lib/cloudflare/hyperdrive.js.map +1 -1
  46. package/lib/cloudflare/website.d.ts.map +1 -1
  47. package/lib/cloudflare/website.js +80 -82
  48. package/lib/cloudflare/website.js.map +1 -1
  49. package/lib/cloudflare/worker-bundle.d.ts +6 -0
  50. package/lib/cloudflare/worker-bundle.d.ts.map +1 -1
  51. package/lib/cloudflare/worker-bundle.js +34 -10
  52. package/lib/cloudflare/worker-bundle.js.map +1 -1
  53. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  54. package/lib/cloudflare/worker-metadata.js +2 -1
  55. package/lib/cloudflare/worker-metadata.js.map +1 -1
  56. package/lib/cloudflare/worker.d.ts.map +1 -1
  57. package/lib/cloudflare/worker.js +24 -6
  58. package/lib/cloudflare/worker.js.map +1 -1
  59. package/lib/cloudflare/wrangler.json.d.ts +2 -4
  60. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  61. package/lib/cloudflare/wrangler.json.js +16 -14
  62. package/lib/cloudflare/wrangler.json.js.map +1 -1
  63. package/lib/context.d.ts +3 -1
  64. package/lib/context.d.ts.map +1 -1
  65. package/lib/context.js +2 -2
  66. package/lib/context.js.map +1 -1
  67. package/lib/destroy.d.ts +8 -0
  68. package/lib/destroy.d.ts.map +1 -1
  69. package/lib/destroy.js +20 -4
  70. package/lib/destroy.js.map +1 -1
  71. package/lib/neon/project.d.ts.map +1 -1
  72. package/lib/neon/project.js +4 -5
  73. package/lib/neon/project.js.map +1 -1
  74. package/lib/planetscale/api/client.gen.d.ts +1750 -0
  75. package/lib/planetscale/api/client.gen.d.ts.map +1 -0
  76. package/lib/planetscale/api/client.gen.js +2401 -0
  77. package/lib/planetscale/api/client.gen.js.map +1 -0
  78. package/lib/planetscale/api/index.d.ts +3 -0
  79. package/lib/planetscale/api/index.d.ts.map +1 -0
  80. package/lib/planetscale/api/index.js +4 -0
  81. package/lib/planetscale/api/index.js.map +1 -0
  82. package/lib/planetscale/api/types.gen.d.ts +12156 -0
  83. package/lib/planetscale/api/types.gen.d.ts.map +1 -0
  84. package/lib/planetscale/api/types.gen.js +2 -0
  85. package/lib/planetscale/api/types.gen.js.map +1 -0
  86. package/lib/planetscale/branch.d.ts +5 -8
  87. package/lib/planetscale/branch.d.ts.map +1 -1
  88. package/lib/planetscale/branch.js +111 -97
  89. package/lib/planetscale/branch.js.map +1 -1
  90. package/lib/planetscale/database.d.ts +2 -6
  91. package/lib/planetscale/database.d.ts.map +1 -1
  92. package/lib/planetscale/database.js +157 -118
  93. package/lib/planetscale/database.js.map +1 -1
  94. package/lib/planetscale/index.d.ts +1 -1
  95. package/lib/planetscale/index.d.ts.map +1 -1
  96. package/lib/planetscale/index.js +1 -1
  97. package/lib/planetscale/index.js.map +1 -1
  98. package/lib/planetscale/password.d.ts +4 -7
  99. package/lib/planetscale/password.d.ts.map +1 -1
  100. package/lib/planetscale/password.js +71 -56
  101. package/lib/planetscale/password.js.map +1 -1
  102. package/lib/planetscale/utils.d.ts +8 -6
  103. package/lib/planetscale/utils.d.ts.map +1 -1
  104. package/lib/planetscale/utils.js +85 -70
  105. package/lib/planetscale/utils.js.map +1 -1
  106. package/lib/scope.d.ts +5 -1
  107. package/lib/scope.d.ts.map +1 -1
  108. package/lib/scope.js +11 -3
  109. package/lib/scope.js.map +1 -1
  110. package/lib/upstash/redis.js +1 -1
  111. package/lib/upstash/redis.js.map +1 -1
  112. package/lib/util/dedent.d.ts +3 -14
  113. package/lib/util/dedent.d.ts.map +1 -1
  114. package/lib/util/dedent.js +28 -52
  115. package/lib/util/dedent.js.map +1 -1
  116. package/lib/util/idempotent-spawn.d.ts.map +1 -1
  117. package/lib/util/idempotent-spawn.js +21 -2
  118. package/lib/util/idempotent-spawn.js.map +1 -1
  119. package/lib/util/xml.js +1 -1
  120. package/lib/util/xml.js.map +1 -1
  121. package/package.json +4 -3
  122. package/src/alchemy.ts +14 -6
  123. package/src/apply.ts +13 -1
  124. package/src/cloudflare/bindings.ts +3 -1
  125. package/src/cloudflare/bucket.ts +3 -1
  126. package/src/cloudflare/bundle/cloudflare-internal.ts +42 -0
  127. package/src/cloudflare/bundle/nodejs-builtin-modules.ts +14 -0
  128. package/src/cloudflare/bundle/plugin-als-external.ts +13 -0
  129. package/src/cloudflare/bundle/plugin-hybrid-node-compat.ts +29 -28
  130. package/src/cloudflare/bundle/plugin-node-compat.ts +114 -0
  131. package/src/cloudflare/cloudflare-env-proxy.ts +1 -1
  132. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  133. package/src/cloudflare/d1-local-migrations.ts +2 -2
  134. package/src/cloudflare/durable-object-namespace.ts +1 -1
  135. package/src/cloudflare/hyperdrive.ts +1 -1
  136. package/src/cloudflare/website.ts +88 -89
  137. package/src/cloudflare/worker-bundle.ts +46 -9
  138. package/src/cloudflare/worker-metadata.ts +3 -1
  139. package/src/cloudflare/worker.ts +35 -7
  140. package/src/cloudflare/wrangler.json.ts +108 -110
  141. package/src/context.ts +5 -3
  142. package/src/destroy.ts +26 -8
  143. package/src/neon/project.ts +4 -5
  144. package/src/planetscale/api/client.gen.ts +2882 -0
  145. package/src/planetscale/api/index.ts +4 -0
  146. package/src/planetscale/api/types.gen.ts +13041 -0
  147. package/src/planetscale/branch.ts +152 -169
  148. package/src/planetscale/database.ts +195 -204
  149. package/src/planetscale/index.ts +1 -1
  150. package/src/planetscale/password.ts +86 -85
  151. package/src/planetscale/utils.ts +141 -122
  152. package/src/scope.ts +12 -3
  153. package/src/upstash/redis.ts +1 -1
  154. package/src/util/dedent.ts +33 -61
  155. package/src/util/idempotent-spawn.ts +23 -2
  156. package/src/util/xml.ts +1 -1
  157. package/templates/astro/alchemy.run.ts +1 -3
  158. package/templates/hono/alchemy.run.ts +0 -1
  159. package/templates/nuxt/alchemy.run.ts +1 -3
  160. package/templates/react-router/alchemy.run.ts +1 -3
  161. package/templates/rwsdk/alchemy.run.ts +0 -2
  162. package/templates/sveltekit/alchemy.run.ts +1 -3
  163. package/templates/tanstack-start/alchemy.run.ts +1 -3
  164. package/templates/typescript/alchemy.run.ts +0 -1
  165. package/templates/vite/alchemy.run.ts +0 -1
  166. package/workers/cloudflare-state-store.js +58 -58
  167. package/lib/cloudflare/bundle/externals.d.ts +0 -3
  168. package/lib/cloudflare/bundle/externals.d.ts.map +0 -1
  169. package/lib/cloudflare/bundle/externals.js +0 -35
  170. package/lib/cloudflare/bundle/externals.js.map +0 -1
  171. package/lib/cloudflare/bundle/plugin-compat-warning.d.ts +0 -10
  172. package/lib/cloudflare/bundle/plugin-compat-warning.d.ts.map +0 -1
  173. package/lib/cloudflare/bundle/plugin-compat-warning.js +0 -67
  174. package/lib/cloudflare/bundle/plugin-compat-warning.js.map +0 -1
  175. package/lib/planetscale/api.d.ts +0 -53
  176. package/lib/planetscale/api.d.ts.map +0 -1
  177. package/lib/planetscale/api.js +0 -84
  178. package/lib/planetscale/api.js.map +0 -1
  179. package/src/cloudflare/bundle/externals.ts +0 -36
  180. package/src/cloudflare/bundle/plugin-compat-warning.ts +0 -94
  181. package/src/planetscale/api.ts +0 -115
@@ -1,6 +1,6 @@
1
1
  import { Resource } from "../resource.js";
2
- import { PlanetScaleApi } from "./api.js";
3
- import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
2
+ import { PlanetScaleClient } from "./api/client.gen.js";
3
+ import { ensureProductionBranchClusterSize, waitForDatabaseReady, } from "./utils.js";
4
4
  /**
5
5
  * Create or manage a PlanetScale database branch
6
6
  *
@@ -42,126 +42,140 @@ import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
42
42
  */
43
43
  export const Branch = Resource("planetscale::Branch", async function (id, props) {
44
44
  const adopt = props.adopt ?? this.scope.adopt;
45
- const apiKey = props.apiKey?.unencrypted || process.env.PLANETSCALE_API_TOKEN;
46
- if (!apiKey) {
47
- throw new Error("PLANETSCALE_API_TOKEN environment variable is required");
48
- }
49
- const api = new PlanetScaleApi({ apiKey });
45
+ const api = new PlanetScaleClient(props);
50
46
  const branchName = props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
51
47
  if (this.phase === "update" && this.output.name !== branchName) {
52
48
  // TODO(sam): maybe we don't need to replace? just branch again? or rename?
53
49
  this.replace();
54
50
  }
55
51
  if (this.phase === "delete") {
56
- try {
57
- if (this.output?.name) {
58
- const response = await api.delete(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${this.output.name}`);
59
- if (!response.ok && response.status !== 404) {
60
- throw new Error(`Failed to delete branch: ${response.statusText} ${await response.text()}`);
61
- }
52
+ if (this.output?.name) {
53
+ const response = await api.organizations.databases.branches.delete({
54
+ path: {
55
+ organization: props.organizationId,
56
+ database: props.databaseName,
57
+ name: this.output.name,
58
+ },
59
+ result: "full",
60
+ });
61
+ if (response.error && response.error.status !== 404) {
62
+ throw new Error(`Failed to delete branch: ${response.error.message}`, {
63
+ cause: response.error,
64
+ });
62
65
  }
63
66
  }
64
- catch (error) {
65
- console.error("Error deleting branch:", error);
66
- throw error;
67
- }
68
67
  return this.destroy();
69
68
  }
70
- try {
71
- const parentBranchName = !props.parentBranch
72
- ? "main"
73
- : typeof props.parentBranch === "string"
74
- ? props.parentBranch
75
- : props.parentBranch.name;
76
- if (typeof props.parentBranch !== "string" && props.parentBranch) {
77
- await waitForDatabaseReady(api, props.organizationId, props.databaseName, props.parentBranch.name);
69
+ const parentBranchName = !props.parentBranch
70
+ ? "main"
71
+ : typeof props.parentBranch === "string"
72
+ ? props.parentBranch
73
+ : props.parentBranch.name;
74
+ if (typeof props.parentBranch !== "string" && props.parentBranch) {
75
+ await waitForDatabaseReady(api, props.organizationId, props.databaseName, props.parentBranch.name);
76
+ }
77
+ // Check if branch exists
78
+ const getResponse = await api.organizations.databases.branches.get({
79
+ path: {
80
+ organization: props.organizationId,
81
+ database: props.databaseName,
82
+ name: branchName,
83
+ },
84
+ result: "full",
85
+ });
86
+ if (getResponse.error && getResponse.error.status !== 404) {
87
+ // Error getting branch
88
+ throw new Error(`Failed to get branch: ${getResponse.error.message}`, {
89
+ cause: getResponse.error,
90
+ });
91
+ }
92
+ if (getResponse.data) {
93
+ // Branch exists
94
+ if (!adopt) {
95
+ throw new Error(`Branch ${branchName} already exists and adopt is false`);
78
96
  }
79
- // Check if branch exists
80
- const getResponse = await api.get(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}`);
81
- if (!getResponse.ok && getResponse.status !== 404) {
82
- // Error getting branch
83
- throw new Error(`Failed to get branch: ${getResponse.statusText} ${await getResponse.text()}`);
97
+ const data = getResponse.data;
98
+ const currentParentBranch = data.parent_branch || "main";
99
+ // Check immutable properties
100
+ if (props.parentBranch && parentBranchName !== currentParentBranch) {
101
+ throw new Error(`Cannot change parent branch from ${currentParentBranch} to ${parentBranchName}`);
84
102
  }
85
- if (getResponse.ok) {
86
- // Branch exists
87
- if (!adopt) {
88
- throw new Error(`Branch ${branchName} already exists and adopt is false`);
89
- }
90
- const data = await getResponse.json();
91
- const currentParentBranch = data.parent_branch || "main";
92
- // Check immutable properties
93
- if (props.parentBranch && parentBranchName !== currentParentBranch) {
94
- throw new Error(`Cannot change parent branch from ${currentParentBranch} to ${parentBranchName}`);
95
- }
96
- if (this.output?.backupId) {
97
- console.warn("BackupID is set, but branch already exists, so it will be ignored");
98
- }
99
- if (this.output?.seedData) {
100
- console.warn("SeedData is set, but branch already exists, so it will be ignored");
101
- }
102
- // Update mutable properties if they've changed
103
- if (props.safeMigrations !== undefined) {
104
- const safeMigrationsResponse = await api[props.safeMigrations ? "post" : "delete"](`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}/safe-migrations`);
105
- if (!safeMigrationsResponse.ok) {
106
- throw new Error(`Failed to ${props.safeMigrations ? "enable" : "disable"} safe migrations: ${safeMigrationsResponse.statusText}`);
107
- }
108
- }
109
- if (props.clusterSize && data.cluster_size !== props.clusterSize) {
110
- const clusterResponse = await api.patch(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}/cluster`, {
111
- cluster_size: props.clusterSize,
112
- });
113
- if (!clusterResponse.ok) {
114
- throw new Error(`Failed to update cluster size: ${clusterResponse.statusText}`);
115
- }
116
- }
117
- return this({
118
- ...props,
119
- name: branchName,
120
- parentBranch: currentParentBranch,
121
- createdAt: data.created_at,
122
- updatedAt: data.updated_at,
123
- htmlUrl: data.html_url,
124
- });
103
+ if (this.output?.backupId) {
104
+ console.warn("BackupID is set, but branch already exists, so it will be ignored");
125
105
  }
126
- await waitForDatabaseReady(api, props.organizationId, props.databaseName);
127
- // Branch doesn't exist, create it
128
- const createResponse = await api.post(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches`, {
129
- name: branchName,
130
- parent_branch: parentBranchName,
131
- backup_id: props.backupId,
132
- seed_data: props.seedData,
133
- cluster_size: props.clusterSize,
134
- });
135
- if (!createResponse.ok) {
136
- throw new Error(`Failed to create branch: ${createResponse.statusText} ${await createResponse.text()}`);
106
+ if (this.output?.seedData) {
107
+ console.warn("SeedData is set, but branch already exists, so it will be ignored");
137
108
  }
138
- const data = await createResponse.json();
139
- // Handle safe migrations if specified
109
+ // Update mutable properties if they've changed
140
110
  if (props.safeMigrations !== undefined) {
141
- // We can't change the migrations mode if the database is not ready
142
- await waitForDatabaseReady(api, props.organizationId, props.databaseName, branchName);
143
- const safeMigrationsResponse = await api[props.safeMigrations ? "post" : "delete"](`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}/safe-migrations`);
144
- if (!safeMigrationsResponse.ok) {
145
- throw new Error(`Failed to ${props.safeMigrations ? "enable" : "disable"} safe migrations: ${safeMigrationsResponse.statusText} : ${await safeMigrationsResponse.text()}`);
146
- }
111
+ await api.organizations.databases.branches.safeMigrations[props.safeMigrations ? "post" : "delete"]({
112
+ path: {
113
+ organization: props.organizationId,
114
+ database: props.databaseName,
115
+ name: branchName,
116
+ },
117
+ });
147
118
  }
148
- // Handle cluster size update if specified
149
- if (props.clusterSize) {
150
- // Wait for database to be ready before modifying cluster size
151
- await fixClusterSize(api, props.organizationId, props.databaseName, branchName, props.clusterSize, true);
119
+ if (props.clusterSize && data.cluster_name !== props.clusterSize) {
120
+ await api.organizations.databases.branches.cluster.patch({
121
+ path: {
122
+ organization: props.organizationId,
123
+ database: props.databaseName,
124
+ name: branchName,
125
+ },
126
+ body: {
127
+ cluster_size: props.clusterSize,
128
+ },
129
+ });
152
130
  }
153
131
  return this({
154
132
  ...props,
155
133
  name: branchName,
156
- parentBranch: data.parent_branch,
134
+ parentBranch: currentParentBranch,
157
135
  createdAt: data.created_at,
158
136
  updatedAt: data.updated_at,
159
137
  htmlUrl: data.html_url,
160
138
  });
161
139
  }
162
- catch (error) {
163
- console.error("Error managing branch:", error);
164
- throw error;
140
+ await waitForDatabaseReady(api, props.organizationId, props.databaseName);
141
+ // Branch doesn't exist, create it
142
+ const data = await api.organizations.databases.branches.post({
143
+ path: {
144
+ organization: props.organizationId,
145
+ database: props.databaseName,
146
+ },
147
+ body: {
148
+ name: branchName,
149
+ parent_branch: parentBranchName,
150
+ backup_id: props.backupId,
151
+ seed_data: props.seedData,
152
+ cluster_size: props.clusterSize,
153
+ },
154
+ });
155
+ // Handle safe migrations if specified
156
+ if (props.safeMigrations !== undefined) {
157
+ // We can't change the migrations mode if the database is not ready
158
+ await waitForDatabaseReady(api, props.organizationId, props.databaseName, branchName);
159
+ await api.organizations.databases.branches.safeMigrations[props.safeMigrations ? "post" : "delete"]({
160
+ path: {
161
+ organization: props.organizationId,
162
+ database: props.databaseName,
163
+ name: branchName,
164
+ },
165
+ });
166
+ }
167
+ // Handle cluster size update if specified
168
+ if (props.clusterSize) {
169
+ // Wait for database to be ready before modifying cluster size
170
+ await ensureProductionBranchClusterSize(api, props.organizationId, props.databaseName, branchName, props.clusterSize, true);
165
171
  }
172
+ return this({
173
+ ...props,
174
+ name: branchName,
175
+ parentBranch: data.parent_branch,
176
+ createdAt: data.created_at,
177
+ updatedAt: data.updated_at,
178
+ htmlUrl: data.html_url,
179
+ });
166
180
  });
167
181
  //# sourceMappingURL=branch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/planetscale/branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/planetscale/branch.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import type { Context } from "../context.ts";
2
2
  import { Resource } from "../resource.ts";
3
- import type { Secret } from "../secret.ts";
3
+ import type { PlanetScaleProps } from "./api/client.gen.ts";
4
4
  import { type PlanetScaleClusterSize } from "./utils.ts";
5
5
  /**
6
6
  * Properties for creating or updating a PlanetScale Database
7
7
  */
8
- export interface DatabaseProps {
8
+ export interface DatabaseProps extends PlanetScaleProps {
9
9
  /**
10
10
  * The name of the database
11
11
  *
@@ -16,10 +16,6 @@ export interface DatabaseProps {
16
16
  * The organization ID where the database will be created
17
17
  */
18
18
  organizationId: string;
19
- /**
20
- * PlanetScale API token (overrides environment variable)
21
- */
22
- apiKey?: Secret;
23
19
  /**
24
20
  * Whether to adopt the database if it already exists in Planetscale
25
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,QACf,SAAQ,QAAQ,CAAC,uBAAuB,CAAC,EACvC,aAAa;IACf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,MACnB,MAAM,SACH,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CAsOrB,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,QACf,SAAQ,QAAQ,CAAC,uBAAuB,CAAC,EACvC,aAAa;IACf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,MACnB,MAAM,SACH,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CAkOrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Resource } from "../resource.js";
2
- import { PlanetScaleApi } from "./api.js";
3
- import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
2
+ import { PlanetScaleClient } from "./api/client.gen.js";
3
+ import { ensureProductionBranchClusterSize, waitForDatabaseReady, } from "./utils.js";
4
4
  /**
5
5
  * Create, manage and delete PlanetScale databases
6
6
  *
@@ -36,58 +36,82 @@ import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
36
36
  * });
37
37
  */
38
38
  export const Database = Resource("planetscale::Database", async function (id, props) {
39
- const adopt = props.adopt ?? this.scope.adopt;
40
- const apiKey = props.apiKey?.unencrypted || process.env.PLANETSCALE_API_TOKEN;
41
- if (!apiKey) {
42
- throw new Error("PLANETSCALE_API_TOKEN environment variable is required");
43
- }
44
- const api = new PlanetScaleApi({ apiKey });
39
+ const api = new PlanetScaleClient(props);
45
40
  const databaseName = props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
46
41
  if (this.phase === "update" && this.output.name !== databaseName) {
47
- await api.patch(`/organizations/${props.organizationId}/databases/${this.output.name}`, { new_name: databaseName });
42
+ await api.organizations.databases.patch({
43
+ path: {
44
+ organization: props.organizationId,
45
+ name: this.output.name,
46
+ },
47
+ body: { new_name: databaseName },
48
+ });
48
49
  }
49
50
  if (this.phase === "delete") {
50
- try {
51
- if (this.output?.name) {
52
- const response = await api.delete(`/organizations/${props.organizationId}/databases/${this.output.name}`);
53
- if (!response.ok && response.status !== 404) {
54
- throw new Error(`Failed to delete database: ${response.statusText} ${await response.text()}`);
55
- }
51
+ if (this.output?.name) {
52
+ const response = await api.organizations.databases.delete({
53
+ path: {
54
+ organization: props.organizationId,
55
+ name: this.output.name,
56
+ },
57
+ result: "full",
58
+ });
59
+ if (response.error && response.error.status !== 404) {
60
+ throw new Error(`Failed to delete database "${this.output.name}"`, {
61
+ cause: response.error,
62
+ });
56
63
  }
57
64
  }
58
- catch (error) {
59
- console.error("Error deleting database:", error);
60
- throw error;
61
- }
62
65
  return this.destroy();
63
66
  }
64
- try {
65
- // Check if database exists
66
- const getResponse = await api.get(`/organizations/${props.organizationId}/databases/${databaseName}`);
67
- const getData = await getResponse.json();
68
- if (this.phase === "update" || (adopt && getResponse.ok)) {
69
- if (!getResponse.ok) {
70
- throw new Error(`Database ${databaseName} not found`);
67
+ // Check if database exists
68
+ const getResponse = await api.organizations.databases.get({
69
+ path: {
70
+ organization: props.organizationId,
71
+ name: databaseName,
72
+ },
73
+ result: "full",
74
+ });
75
+ if (this.phase === "update" || (props.adopt && getResponse.data)) {
76
+ if (!getResponse.data) {
77
+ throw new Error(`Database "${databaseName}" not found`, {
78
+ cause: getResponse.error,
79
+ });
80
+ }
81
+ // Update database settings
82
+ // If updating to a non-'main' default branch, create it first
83
+ if (props.defaultBranch && props.defaultBranch !== "main") {
84
+ const branchResponse = await api.organizations.databases.branches.get({
85
+ path: {
86
+ organization: props.organizationId,
87
+ database: databaseName,
88
+ name: props.defaultBranch,
89
+ },
90
+ result: "full",
91
+ });
92
+ if (!branchResponse.data) {
93
+ await waitForDatabaseReady(api, props.organizationId, databaseName);
71
94
  }
72
- // Update database settings
73
- // If updating to a non-'main' default branch, create it first
74
- if (props.defaultBranch && props.defaultBranch !== "main") {
75
- const branchResponse = await api.get(`/organizations/${props.organizationId}/databases/${databaseName}/branches/${props.defaultBranch}`);
76
- if (!getData.ready) {
77
- await waitForDatabaseReady(api, props.organizationId, databaseName);
78
- }
79
- if (!branchResponse.ok && branchResponse.status === 404) {
80
- // Create the branch
81
- const createBranchResponse = await api.post(`/organizations/${props.organizationId}/databases/${databaseName}/branches`, {
95
+ if (branchResponse.error && branchResponse.error.status === 404) {
96
+ // Create the branch
97
+ await api.organizations.databases.branches.post({
98
+ path: {
99
+ organization: props.organizationId,
100
+ database: databaseName,
101
+ },
102
+ body: {
82
103
  name: props.defaultBranch,
83
104
  parent_branch: "main",
84
- });
85
- if (!createBranchResponse.ok) {
86
- throw new Error(`Failed to create default branch: ${createBranchResponse.statusText} ${await createBranchResponse.text()}`);
87
- }
88
- }
105
+ },
106
+ });
89
107
  }
90
- const updateResponse = await api.patch(`/organizations/${props.organizationId}/databases/${databaseName}`, {
108
+ }
109
+ const updateResponse = await api.organizations.databases.patch({
110
+ path: {
111
+ organization: props.organizationId,
112
+ name: databaseName,
113
+ },
114
+ body: {
91
115
  automatic_migrations: props.automaticMigrations,
92
116
  migration_framework: props.migrationFramework,
93
117
  migration_table_name: props.migrationTableName,
@@ -97,31 +121,43 @@ export const Database = Resource("planetscale::Database", async function (id, pr
97
121
  insights_raw_queries: props.insightsRawQueries,
98
122
  production_branch_web_console: props.productionBranchWebConsole,
99
123
  default_branch: props.defaultBranch,
100
- });
101
- if (!updateResponse.ok) {
102
- throw new Error(`Failed to update database: ${updateResponse.statusText} ${await updateResponse.text()}`);
103
- }
104
- await fixClusterSize(api, props.organizationId, databaseName, props.defaultBranch || "main", props.clusterSize, getData.ready);
105
- const data = await updateResponse.json();
106
- return this({
107
- ...props,
108
- id: data.id,
109
- name: databaseName,
110
- state: data.state,
111
- defaultBranch: data.default_branch,
112
- plan: data.plan,
113
- createdAt: data.created_at,
114
- updatedAt: data.updated_at,
115
- htmlUrl: data.html_url,
116
- });
117
- }
118
- if (getResponse.ok) {
119
- throw new Error(`Database with name ${databaseName} already exists`);
120
- }
121
- // Create new database
122
- const createResponse = await api.post(`/organizations/${props.organizationId}/databases`, {
124
+ },
125
+ });
126
+ await ensureProductionBranchClusterSize(api, props.organizationId, databaseName, props.defaultBranch || "main", props.clusterSize, updateResponse.ready);
127
+ return this({
128
+ ...props,
129
+ id: updateResponse.id,
123
130
  name: databaseName,
124
- region_slug: props.region?.slug,
131
+ state: updateResponse.state,
132
+ defaultBranch: updateResponse.default_branch,
133
+ plan: updateResponse.plan,
134
+ createdAt: updateResponse.created_at,
135
+ updatedAt: updateResponse.updated_at,
136
+ htmlUrl: updateResponse.html_url,
137
+ });
138
+ }
139
+ if (getResponse.data) {
140
+ throw new Error(`Database with name "${databaseName}" already exists`);
141
+ }
142
+ // Create new database
143
+ let data = await api.organizations.databases.post({
144
+ path: {
145
+ organization: props.organizationId,
146
+ },
147
+ body: {
148
+ name: databaseName,
149
+ region: props.region?.slug,
150
+ kind: "mysql",
151
+ cluster_size: props.clusterSize,
152
+ },
153
+ });
154
+ // These settings can't be set on creation, so we need to patch them after creation.
155
+ data = await api.organizations.databases.patch({
156
+ path: {
157
+ organization: props.organizationId,
158
+ name: databaseName,
159
+ },
160
+ body: {
125
161
  require_approval_for_deploy: props.requireApprovalForDeploy,
126
162
  allow_data_branching: props.allowDataBranching,
127
163
  automatic_migrations: props.automaticMigrations,
@@ -130,63 +166,66 @@ export const Database = Resource("planetscale::Database", async function (id, pr
130
166
  production_branch_web_console: props.productionBranchWebConsole,
131
167
  migration_framework: props.migrationFramework,
132
168
  migration_table_name: props.migrationTableName,
133
- cluster_size: props.clusterSize,
169
+ },
170
+ });
171
+ // If a non-'main' default branch is specified, create it
172
+ if (props.defaultBranch && props.defaultBranch !== "main") {
173
+ await waitForDatabaseReady(api, props.organizationId, databaseName);
174
+ // Check if branch exists
175
+ const branchResponse = await api.organizations.databases.branches.get({
176
+ path: {
177
+ organization: props.organizationId,
178
+ database: databaseName,
179
+ name: props.defaultBranch,
180
+ },
181
+ result: "full",
134
182
  });
135
- if (!createResponse.ok) {
136
- throw new Error(`Failed to create database: ${createResponse.statusText} ${await createResponse.text()}`);
137
- }
138
- const data = await createResponse.json();
139
- // If a non-'main' default branch is specified, create it
140
- if (props.defaultBranch && props.defaultBranch !== "main") {
141
- await waitForDatabaseReady(api, props.organizationId, databaseName);
142
- // Check if branch exists
143
- const branchResponse = await api.get(`/organizations/${props.organizationId}/databases/${databaseName}/branches/${props.defaultBranch}`);
144
- if (!branchResponse.ok && branchResponse.status === 404) {
145
- // Create the branch
146
- const createBranchResponse = await api.post(`/organizations/${props.organizationId}/databases/${databaseName}/branches`, {
183
+ if (branchResponse.error && branchResponse.error.status === 404) {
184
+ // Create the branch
185
+ await api.organizations.databases.branches.post({
186
+ path: {
187
+ organization: props.organizationId,
188
+ database: databaseName,
189
+ },
190
+ body: {
147
191
  name: props.defaultBranch,
148
192
  parent_branch: "main",
149
- });
150
- if (!createBranchResponse.ok) {
151
- throw new Error(`Failed to create default branch: ${createBranchResponse.statusText} ${await createBranchResponse.text()}`);
152
- }
153
- await fixClusterSize(api, props.organizationId, databaseName, props.defaultBranch || "main", props.clusterSize, false);
154
- // Update database to use new branch as default
155
- const updateResponse = await api.patch(`/organizations/${props.organizationId}/databases/${databaseName}`, {
156
- default_branch: props.defaultBranch,
157
- });
158
- if (!updateResponse.ok) {
159
- throw new Error(`Failed to set default branch: ${updateResponse.statusText} ${await updateResponse.text()}`);
160
- }
161
- const updatedData = await updateResponse.json();
162
- return this({
163
- ...props,
164
- id: data.id,
193
+ },
194
+ });
195
+ await ensureProductionBranchClusterSize(api, props.organizationId, databaseName, props.defaultBranch || "main", props.clusterSize, false);
196
+ // Update database to use new branch as default
197
+ const updatedData = await api.organizations.databases.patch({
198
+ path: {
199
+ organization: props.organizationId,
165
200
  name: databaseName,
166
- state: updatedData.state,
167
- defaultBranch: updatedData.default_branch,
168
- plan: updatedData.plan,
169
- createdAt: updatedData.created_at,
170
- updatedAt: updatedData.updated_at,
171
- htmlUrl: updatedData.html_url,
172
- });
173
- }
201
+ },
202
+ body: {
203
+ default_branch: props.defaultBranch,
204
+ },
205
+ });
206
+ return this({
207
+ ...props,
208
+ id: data.id,
209
+ name: databaseName,
210
+ state: updatedData.state,
211
+ defaultBranch: updatedData.default_branch,
212
+ plan: updatedData.plan,
213
+ createdAt: updatedData.created_at,
214
+ updatedAt: updatedData.updated_at,
215
+ htmlUrl: updatedData.html_url,
216
+ });
174
217
  }
175
- return this({
176
- ...props,
177
- id: data.id,
178
- name: databaseName,
179
- state: data.state,
180
- defaultBranch: data.default_branch || "main",
181
- plan: data.plan,
182
- createdAt: data.created_at,
183
- updatedAt: data.updated_at,
184
- htmlUrl: data.html_url,
185
- });
186
- }
187
- catch (error) {
188
- console.error("Error managing database:", error);
189
- throw error;
190
218
  }
219
+ return this({
220
+ ...props,
221
+ id: data.id,
222
+ name: databaseName,
223
+ state: data.state,
224
+ defaultBranch: data.default_branch || "main",
225
+ plan: data.plan,
226
+ createdAt: data.created_at,
227
+ updatedAt: data.updated_at,
228
+ htmlUrl: data.html_url,
229
+ });
191
230
  });
192
231
  //# sourceMappingURL=database.js.map