MCPcopy
hub / github.com/etcd-io/bbolt / ExampleTx_CopyFile

Function ExampleTx_CopyFile

tx_test.go:853–910  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

851}
852
853func ExampleTx_CopyFile() {
854 // Open the database.
855 db, err := bolt.Open(tempfile(), 0600, nil)
856 if err != nil {
857 log.Fatal(err)
858 }
859 defer os.Remove(db.Path())
860
861 // Create a bucket and a key.
862 if err := db.Update(func(tx *bolt.Tx) error {
863 b, err := tx.CreateBucket([]byte("widgets"))
864 if err != nil {
865 return err
866 }
867 if err := b.Put([]byte("foo"), []byte("bar")); err != nil {
868 return err
869 }
870 return nil
871 }); err != nil {
872 log.Fatal(err)
873 }
874
875 // Copy the database to another file.
876 toFile := tempfile()
877 if err := db.View(func(tx *bolt.Tx) error {
878 return tx.CopyFile(toFile, 0666)
879 }); err != nil {
880 log.Fatal(err)
881 }
882 defer os.Remove(toFile)
883
884 // Open the cloned database.
885 db2, err := bolt.Open(toFile, 0600, nil)
886 if err != nil {
887 log.Fatal(err)
888 }
889
890 // Ensure that the key exists in the copy.
891 if err := db2.View(func(tx *bolt.Tx) error {
892 value := tx.Bucket([]byte("widgets")).Get([]byte("foo"))
893 fmt.Printf("The value for 'foo' in the clone is: %s\n", value)
894 return nil
895 }); err != nil {
896 log.Fatal(err)
897 }
898
899 // Close database to release file lock.
900 if err := db.Close(); err != nil {
901 log.Fatal(err)
902 }
903
904 if err := db2.Close(); err != nil {
905 log.Fatal(err)
906 }
907
908 // Output:
909 // The value for 'foo' in the clone is: bar
910}

Callers

nothing calls this directly

Calls 11

tempfileFunction · 0.85
UpdateMethod · 0.80
ViewMethod · 0.80
CopyFileMethod · 0.80
FatalMethod · 0.65
PathMethod · 0.45
CreateBucketMethod · 0.45
PutMethod · 0.45
GetMethod · 0.45
BucketMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected