subsquid / squid-sdk

The main repo of the squid SDK
Apache License 2.0
1.22k stars 150 forks source link

New format of Squid metadata #17

Closed dzhelezov closed 2 years ago

dzhelezov commented 2 years ago

This is a proposal of a Squid metadata template specification. Squid Metadata reflects how the Squid is meant to be deployed and what it actually does. At the same time it is agnostic with respect to what it does. Exclamation mark (!) means the field is mandatory, (?) means it's optional

squid: {
   version!: "v1", // version of the Squid API reflected in the API endpoint
   slug!: "balances", // API endpoint will be of the form .../<slug>/<version>
   title!: "DotSama Balances", // Squid title as shown in public explorers, e.g. Aquarium
   description?: "Sample Squid collecting balances from parachains", // Squid description as shown in public expolorers, e.g. Aquarium
   tags?: [ "DeFi", "Balances", "Wallet" ], // Tags for search squids agains keywords
   palletes?: [ // Pallets to search squids against keywords 
       "balances"
   ],
   logo?: "assets/logo.png", // must be relative to the squid root folder
   deploy!: {
      init!: "<init command, e.g. migrations>", 
      api!: "<gql server command>",
      store?: [{ 
          kind: "postgres", // only postgres is supported for now
          provision: "auto", // db is provided by the deployment. only "auto" is supported for now
          limits?: {   // resource limits for the store
             size: 100Gb // default is 100Gb
          } 
      }],
      secrets?: [ // list of secrets that has to be provided by the deployment environment. Deployment should fail is no variable is available
          "MY_SECRET_VARIABLE", 
      ],
      processors!: [
          {
             network!: "kusama", // same as in spec
             genesis!: "0x2abcdef", // genesis block of the network
             name!: "kusama-balances",
             limits?:  {
                CPU:  2, // number of cores
                RAM: 1G
             },
             run!: "<run command>"   
         },
         {
             network!: "polkadot",
             genesis!: "0xabcde",  // genesis block
             name!: "polkadot-balances",
             run!: "<run command>",
             limits?:  {
                CPU:  2, // number of cores
                RAM: 1G
             },   
         },
      ]
  }
}
dzhelezov commented 2 years ago

Closed in favour of https://github.com/subsquid/subsquid-cli/issues/12