List all collections

Problem

You need a list of all existing collections within the current database.

Solution

Use the Collections function combined with the Paginate function:

try
{
    Value result = await client.Query(
        Paginate(Collections())
    );
    Console.WriteLine(result);
}
catch (Exception e)
{
    Console.WriteLine($"ERROR: {e.Message}");
}
ObjectV(data: Arr(RefV(id = "Letters", collection = RefV(id = "collections")), RefV(id = "People", collection = RefV(id = "collections")), RefV(id = "characters", collection = RefV(id = "collections")), RefV(id = "customers", collection = RefV(id = "collections")), RefV(id = "decrepit_huts", collection = RefV(id = "collections")), RefV(id = "magical_creatures", collection = RefV(id = "collections")), RefV(id = "orders", collection = RefV(id = "collections")), RefV(id = "posts", collection = RefV(id = "collections")), RefV(id = "products", collection = RefV(id = "collections")), RefV(id = "spellbooks", collection = RefV(id = "collections")), RefV(id = "spells", collection = RefV(id = "collections")), RefV(id = "stores", collection = RefV(id = "collections")), RefV(id = "users", collection = RefV(id = "collections")), RefV(id = "huts", collection = RefV(id = "collections"))))
result, err := client.Query(
	f.Paginate(f.Collections()))

if err != nil {
	fmt.Fprintln(os.Stderr, err)
} else {
	fmt.Println(result)
}
map[data:[{Letters 0xc0001097a0 0xc0001097a0 <nil>} {People 0xc000109890 0xc000109890 <nil>} {characters 0xc000109980 0xc000109980 <nil>} {customers 0xc000109a70 0xc000109a70 <nil>} {decrepit_huts 0xc000109b60 0xc000109b60 <nil>} {magical_creatures 0xc000109c50 0xc000109c50 <nil>} {orders 0xc000109d40 0xc000109d40 <nil>} {posts 0xc000109e30 0xc000109e30 <nil>} {products 0xc000109f20 0xc000109f20 <nil>} {spellbooks 0xc000172030 0xc000172030 <nil>} {spells 0xc000172120 0xc000172120 <nil>} {stores 0xc000172210 0xc000172210 <nil>} {users 0xc000172300 0xc000172300 <nil>} {huts 0xc0001723f0 0xc0001723f0 <nil>}]]
client.query(
  q.Paginate(q.Collections())
)
.then((ret) => console.log(ret))
.catch((err) => console.error(
  'Error: [%s] %s: %s',
  err.name,
  err.message,
  err.errors()[0].description,
))
{
  data: [
    Collection("Letters"),
    Collection("People"),
    Collection("characters"),
    Collection("customers"),
    Collection("decrepit_huts"),
    Collection("magical_creatures"),
    Collection("orders"),
    Collection("posts"),
    Collection("products"),
    Collection("spellbooks"),
    Collection("spells"),
    Collection("stores"),
    Collection("users"),
    Collection("huts")
  ]
}
result = client.query(
  q.paginate(q.collections())
)
print(result)
{'data': [Ref(id=Letters, collection=Ref(id=collections)), Ref(id=People, collection=Ref(id=collections)), Ref(id=characters, collection=Ref(id=collections)), Ref(id=customers, collection=Ref(id=collections)), Ref(id=decrepit_huts, collection=Ref(id=collections)), Ref(id=magical_creatures, collection=Ref(id=collections)), Ref(id=orders, collection=Ref(id=collections)), Ref(id=posts, collection=Ref(id=collections)), Ref(id=products, collection=Ref(id=collections)), Ref(id=spellbooks, collection=Ref(id=collections)), Ref(id=spells, collection=Ref(id=collections)), Ref(id=stores, collection=Ref(id=collections)), Ref(id=users, collection=Ref(id=collections)), Ref(id=huts, collection=Ref(id=collections))]}
Paginate(Collections())
{
  data: [
    Collection("Letters"),
    Collection("People"),
    Collection("characters"),
    Collection("customers"),
    Collection("decrepit_huts"),
    Collection("magical_creatures"),
    Collection("orders"),
    Collection("posts"),
    Collection("products"),
    Collection("spellbooks"),
    Collection("spells"),
    Collection("stores"),
    Collection("users"),
    Collection("huts")
  ]
}
Query metrics:
  •    bytesIn:    33

  •   bytesOut: 1,003

  • computeOps:     1

  •    readOps:     8

  •   writeOps:     0

  •  readBytes:   796

  • writeBytes:     0

  •  queryTime:  60ms

  •    retries:     0

Discussion

The Paginate function defaults to returning up to 64 collections per page. If your database contains more than 64 collections, you can use the size parameter to retrieve up to 100,000 collections at once.

Is this article helpful? 

Tell Fauna how the article can be improved:
Visit Fauna's forums or email docs@fauna.com

Thank you for your feedback!