datasources: Add support for specifying multiple datasources

If multiple sources are specified, the first available source is used.
oh nvm I suppose that's why we have Type()