3b3717d307
* Folds=>groups * Show groups on user profile * Allow group creation from /create * Refactoring to groups * Convert folds to groups * Add new add to group notification * Fix user profile tab bug * Add groups nav and tab for my groups * Remove bad profile pages * remove comments * Add group list dropdown to sidebar * remove unused * group cards ui * Messages=>Comments, v2, groupDetails * Discussion time * Cleaning up some code * Remove follow count * Fix pool scoring for cpmm * Fix imports * Simplify rules, add GroupUser collection * Fix group cards * Refactor * Refactor * Small fixes * Remove string * Add api error detail handling * Clear name field * Componentize * Spacing * Undo userpage memo * Member groups are already in my tab * Remove active contracts reference for now * Remove unused * Refactoring * Allow adding old questions to a group * Rename * Wording * Throw standard v2 APIError * Hide input for non-members, add about under title * Multiple names to & # more * Move comments firestore rules to appropriate subpaths * Group membership, pool=>volume * Cleanup, useEvent * Raise state to parent * Eliminate unused * Cleaning up * Clean code * Revert tags input deletion * Cleaning code * Stylling * Limit members to display * Array cleanup * Add categories back in * Private=>closed * Unused vars
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
// This code is copied from https://firebase.google.com/docs/firestore/solutions/schedule-export
|
|
//
|
|
// To deploy after any changes:
|
|
// `yarn deploy`
|
|
//
|
|
// To manually run a backup: Click "Run Now" on the backupDb script
|
|
// https://console.cloud.google.com/cloudscheduler?project=mantic-markets
|
|
//
|
|
// Backups are here:
|
|
// https://console.cloud.google.com/storage/browser/manifold-firestore-backup
|
|
//
|
|
// To import the data into dev Firestore (from https://firebase.google.com/docs/firestore/manage-data/move-data):
|
|
// 0. Open up a cloud shell from manticmarkets@gmail.com: https://console.cloud.google.com/home/dashboard?cloudshell=true
|
|
// 1. `gcloud config set project dev-mantic-markets`
|
|
// 2. Get the backup timestamp e.g. `2022-01-25T21:19:20_6605`
|
|
// 3. `gcloud firestore import gs://manifold-firestore-backup/2022-01-25T21:19:20_6605 --async`
|
|
// 4. (Optional) `gcloud firestore operations list` to check progress
|
|
|
|
import * as functions from 'firebase-functions'
|
|
import * as firestore from '@google-cloud/firestore'
|
|
const client = new firestore.v1.FirestoreAdminClient()
|
|
|
|
const bucket = 'gs://manifold-firestore-backup'
|
|
|
|
export const backupDb = functions.pubsub
|
|
.schedule('every 24 hours')
|
|
.onRun((_context) => {
|
|
const projectId = process.env.GCP_PROJECT || process.env.GCLOUD_PROJECT
|
|
if (projectId == null) {
|
|
throw new Error('No project ID environment variable set.')
|
|
}
|
|
const databaseName = client.databasePath(projectId, '(default)')
|
|
|
|
return client
|
|
.exportDocuments({
|
|
name: databaseName,
|
|
outputUriPrefix: bucket,
|
|
// Leave collectionIds empty to export all collections
|
|
// or set to a list of collection IDs to export,
|
|
// collectionIds: ['users', 'posts']
|
|
// NOTE: Subcollections are not backed up by default
|
|
collectionIds: [
|
|
'contracts',
|
|
'groups',
|
|
'private-users',
|
|
'stripe-transactions',
|
|
'users',
|
|
'bets',
|
|
'comments',
|
|
'followers',
|
|
'answers',
|
|
'txns',
|
|
],
|
|
})
|
|
.then((responses) => {
|
|
const response = responses[0]
|
|
console.log(`Operation Name: ${response['name']}`)
|
|
})
|
|
.catch((err) => {
|
|
console.error(err)
|
|
throw new Error('Export operation failed')
|
|
})
|
|
})
|