Skip to content

Commit b3eb3a0

Browse files
Merge pull request #561 from appwrite/feat-fix-deploy-collection
2 parents 6bca0dd + 0eb088a commit b3eb3a0

File tree

3 files changed

+72
-3
lines changed

3 files changed

+72
-3
lines changed

templates/cli/lib/commands/deploy.js.twig

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ const {
2323
databasesDeleteAttribute,
2424
databasesListAttributes,
2525
databasesListIndexes,
26-
databasesDeleteIndex
26+
databasesDeleteIndex,
27+
databasesUpdateCollection
2728
} = require("./databases");
2829
const {
2930
teamsGet,
@@ -437,17 +438,27 @@ const deployCollection = async ({ all, yes } = {}) => {
437438

438439
let databaseId;
439440

441+
const localDatabase = localConfig.getDatabase(collection.databaseId);
442+
440443
try {
441444
const database = await databasesGet({
442445
databaseId: collection.databaseId,
443446
parseOutput: false,
444447
});
445448
databaseId = database.$id;
449+
450+
await databasesUpdate({
451+
databaseId: collection.databaseId,
452+
name: localDatabase.name ?? collection.databaseId,
453+
parseOutput: false
454+
})
455+
456+
success(`Updated ${localDatabase.name} ( ${collection.databaseId} )`);
446457
} catch(err) {
447458
log(`Database ${collection.databaseId} not found. Creating it now...`);
448459
const database = await databasesCreate({
449460
databaseId: collection.databaseId,
450-
name: collection.databaseId,
461+
name: localDatabase.name ?? collection.databaseId,
451462
parseOutput: false,
452463
});
453464
databaseId = database.$id;
@@ -547,6 +558,18 @@ const deployCollection = async ({ all, yes } = {}) => {
547558
}
548559

549560
success(`Created ${collection.indexes.length} indexes`);
561+
562+
await databasesUpdateCollection({
563+
databaseId,
564+
collectionId: collection['$id'],
565+
name: collection.name,
566+
documentSecurity: collection.documentSecurity,
567+
permissions: collection['$permissions'],
568+
enabled: collection.enabled,
569+
parseOutput: false
570+
})
571+
572+
success(`Deployed ${collection.name} ( ${collection['$id']} )`);
550573
} catch (e) {
551574
if (e.code == 404) {
552575
log(`Collection ${collection.name} does not exist in the project. Creating ... `);

templates/cli/lib/commands/init.js.twig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,13 @@ const initCollection = async ({ all, databaseId } = {}) => {
170170
}
171171

172172
for(const databaseId of databaseIds) {
173+
const database = await databasesGet({
174+
databaseId,
175+
parseOutput: false
176+
});
177+
178+
localConfig.addDatabase(database);
179+
173180
// TODO: Pagination?
174181
let response = await databasesListCollections({
175182
databaseId,

templates/cli/lib/config.js.twig

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class Local extends Config {
135135
}
136136

137137
getCollection($id) {
138-
if (!this.has("collection")) {
138+
if (!this.has("collections")) {
139139
return {};
140140
}
141141

@@ -166,6 +166,45 @@ class Local extends Config {
166166
this.set("collections", collections);
167167
}
168168

169+
getDatabases() {
170+
if (!this.has("databases")) {
171+
return [];
172+
}
173+
return this.get("databases");
174+
}
175+
176+
getDatabase($id) {
177+
if (!this.has("databases")) {
178+
return {};
179+
}
180+
181+
let databases = this.get("databases");
182+
for (let i = 0; i < databases.length; i++) {
183+
if (databases[i]['$id'] == $id) {
184+
return databases[i];
185+
}
186+
}
187+
188+
return {};
189+
}
190+
191+
addDatabase(props) {
192+
if (!this.has("databases")) {
193+
this.set("databases", []);
194+
}
195+
196+
let databases = this.get("databases");
197+
for (let i = 0; i < databases.length; i++) {
198+
if (databases[i]['$id'] == props['$id']) {
199+
databases[i] = props;
200+
this.set("databases", databases);
201+
return;
202+
}
203+
}
204+
databases.push(props);
205+
this.set("databases", databases);
206+
}
207+
169208
getTeams() {
170209
if (!this.has("teams")) {
171210
return [];

0 commit comments

Comments
 (0)