1// Copyright 2020 The Matrix.org Foundation C.I.C.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15//go:build !wasm
16// +build !wasm
17
18package storage
19
20import (
21	"fmt"
22
23	"github.com/matrix-org/dendrite/appservice/storage/postgres"
24	"github.com/matrix-org/dendrite/appservice/storage/sqlite3"
25	"github.com/matrix-org/dendrite/setup/config"
26)
27
28// NewDatabase opens a new Postgres or Sqlite database (based on dataSourceName scheme)
29// and sets DB connection parameters
30func NewDatabase(dbProperties *config.DatabaseOptions) (Database, error) {
31	switch {
32	case dbProperties.ConnectionString.IsSQLite():
33		return sqlite3.NewDatabase(dbProperties)
34	case dbProperties.ConnectionString.IsPostgres():
35		return postgres.NewDatabase(dbProperties)
36	default:
37		return nil, fmt.Errorf("unexpected database type")
38	}
39}
40