@genoacms/adapter-gcp 0.3.0 → 0.3.8

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.
package/dist/config.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: Config;
1
+ declare const _default: Config<object, object, object>;
2
2
  export default _default;
@@ -7,30 +7,53 @@ const firestore = new Firestore({
7
7
  });
8
8
  const createDocument = async (reference, data) => {
9
9
  const document = await firestore.collection(reference.name).add(data);
10
- return {
10
+ const documentReference = {
11
11
  collection: reference,
12
12
  id: document.id
13
13
  };
14
+ return {
15
+ reference: documentReference,
16
+ data
17
+ };
14
18
  };
15
- const getCollection = async ({ name, schema }) => {
16
- const collection = await firestore.collection(name).get();
19
+ const getCollection = async (reference) => {
20
+ const collection = await firestore.collection(reference.name).get();
17
21
  const documents = [];
18
22
  collection.forEach(document => {
19
23
  const documentData = {};
20
- Object.keys(schema.properties).forEach(key => {
24
+ Object.keys(reference.schema.properties).forEach(key => {
21
25
  documentData[key] = document.get(key);
22
26
  });
23
- documents.push(document.data());
27
+ documents.push({
28
+ reference: {
29
+ collection: reference,
30
+ id: document.id
31
+ },
32
+ data: document.data()
33
+ });
24
34
  });
25
35
  return documents;
26
36
  };
27
37
  const getDocument = async ({ collection, id }) => {
28
38
  const document = await firestore.collection(collection.name).doc(id).get();
29
- return document.data();
39
+ if (!document.exists)
40
+ return undefined;
41
+ const documentReference = {
42
+ collection,
43
+ id
44
+ };
45
+ const documentSnapshot = {
46
+ reference: documentReference,
47
+ data: document.data()
48
+ };
49
+ return documentSnapshot;
30
50
  };
31
51
  const updateDocument = async (reference, document) => {
32
52
  await firestore.collection(reference.collection.name).doc(reference.id).update(document);
33
- return reference;
53
+ return {
54
+ reference,
55
+ data: document
56
+ };
34
57
  };
35
58
  const deleteDocument = async (reference) => {
36
59
  await firestore.collection(reference.collection.name).doc(reference.id).delete();
@@ -36,7 +36,7 @@ const listDirectory = async ({ bucket, name }, listingParams = {}) => {
36
36
  return files.map((file) => {
37
37
  return {
38
38
  name: file.name,
39
- size: file.metadata.size,
39
+ size: file.metadata.size ? parseInt(file.metadata.size) : 0,
40
40
  lastModified: new Date(file.metadata.updated)
41
41
  };
42
42
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genoacms/adapter-gcp",
3
- "version": "0.3.0",
3
+ "version": "0.3.8",
4
4
  "description": "Implementation of abstraction layer of GenoaCMS for GCP",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,7 +17,7 @@
17
17
  "homepage": "https://github.com/GenoaCMS/adapter-gcp#readme",
18
18
  "type": "module",
19
19
  "dependencies": {
20
- "@genoacms/cloudabstraction": "^0.3.2",
20
+ "@genoacms/cloudabstraction": "^0.3.8",
21
21
  "@google-cloud/firestore": "^7.1.0",
22
22
  "@google-cloud/storage": "^7.4.0"
23
23
  },
@@ -27,4 +27,4 @@ interface StorageConfig {
27
27
 
28
28
  interface ConfigGCP extends Config<object, DatabaseConfig, StorageConfig> {}
29
29
 
30
- export default Config
30
+ export default ConfigGCP
@@ -10,34 +10,57 @@ const firestore = new Firestore({
10
10
 
11
11
  const createDocument: databaseT.createDocument = async (reference, data) => {
12
12
  const document = await firestore.collection(reference.name).add(data)
13
- return {
13
+ const documentReference: databaseT.DocumentReference<typeof reference> = {
14
14
  collection: reference,
15
15
  id: document.id
16
16
  }
17
+ return {
18
+ reference: documentReference,
19
+ data
20
+ } satisfies databaseT.DocumentSnapshot<typeof reference>
17
21
  }
18
22
 
19
- const getCollection: databaseT.getCollection = async ({ name, schema }) => {
20
- const collection = await firestore.collection(name).get()
21
- const documents: Array<databaseT.Document<typeof schema>> = []
23
+ const getCollection: databaseT.getCollection = async (reference) => {
24
+ const collection = await firestore.collection(reference.name).get()
25
+ const documents: databaseT.CollectionSnapshot<typeof reference> = []
26
+
22
27
  collection.forEach(document => {
23
- const documentData: databaseT.Document<typeof schema> = {}
24
- Object.keys(schema.properties).forEach(key => {
28
+ const documentData: databaseT.Document<typeof reference.schema> = {}
29
+ Object.keys(reference.schema.properties).forEach(key => {
25
30
  documentData[key] = document.get(key)
26
31
  })
27
32
 
28
- documents.push(document.data())
33
+ documents.push({
34
+ reference: {
35
+ collection: reference,
36
+ id: document.id
37
+ },
38
+ data: document.data() as databaseT.Document<typeof reference.schema>
39
+ })
29
40
  })
30
41
  return documents
31
42
  }
32
43
 
33
44
  const getDocument: databaseT.getDocument = async ({ collection, id }) => {
34
45
  const document = await firestore.collection(collection.name).doc(id).get()
35
- return document.data() as any
46
+ if (!document.exists) return undefined
47
+ const documentReference: databaseT.DocumentReference<typeof collection> = {
48
+ collection,
49
+ id
50
+ }
51
+ const documentSnapshot: databaseT.DocumentSnapshot<typeof collection> = {
52
+ reference: documentReference,
53
+ data: document.data() as databaseT.Document<typeof collection>
54
+ }
55
+ return documentSnapshot
36
56
  }
37
57
 
38
58
  const updateDocument: databaseT.updateDocument = async (reference, document) => {
39
59
  await firestore.collection(reference.collection.name).doc(reference.id).update(document)
40
- return reference
60
+ return {
61
+ reference,
62
+ data: document
63
+ } satisfies databaseT.UpdateSnapshot<typeof reference.collection>
41
64
  }
42
65
 
43
66
  const deleteDocument: databaseT.deleteDocument = async (reference) => {
@@ -45,7 +45,7 @@ const listDirectory: storageT.listDirectory = async ({ bucket, name }, listingPa
45
45
  return files.map((file) => {
46
46
  return {
47
47
  name: file.name,
48
- size: file.metadata.size as number,
48
+ size: file.metadata.size ? parseInt(file.metadata.size as string) : 0,
49
49
  lastModified: new Date(file.metadata.updated as string)
50
50
  } satisfies storageT.StorageObject
51
51
  })