2016-07-07 18:54:16 -07:00
|
|
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
|
|
|
//
|
2016-10-17 14:00:06 -07:00
|
|
|
// This software (Documize Community Edition) is licensed under
|
2016-07-07 18:54:16 -07:00
|
|
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
|
|
|
//
|
|
|
|
// You can operate outside the AGPL restrictions by purchasing
|
|
|
|
// Documize Enterprise Edition and obtaining a commercial license
|
2016-10-17 14:00:06 -07:00
|
|
|
// by contacting <sales@documize.com>.
|
2016-07-07 18:54:16 -07:00
|
|
|
//
|
|
|
|
// https://documize.com
|
|
|
|
|
2017-07-18 21:55:17 +01:00
|
|
|
// Package env provides runtime, server level setup and configuration
|
|
|
|
package env
|
2016-07-07 18:54:16 -07:00
|
|
|
|
2018-09-12 20:03:34 +01:00
|
|
|
import (
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
|
|
)
|
|
|
|
|
|
|
|
// SQL-STORE: DbVariant needs to be struct like: name, delims, std params and conn string method
|
2016-07-07 18:54:16 -07:00
|
|
|
|
2017-07-18 21:55:17 +01:00
|
|
|
// Runtime provides access to database, logger and other server-level scoped objects.
|
2017-07-19 14:48:33 +01:00
|
|
|
// Use Context for per-request values.
|
2017-07-18 21:55:17 +01:00
|
|
|
type Runtime struct {
|
2018-09-14 18:00:24 +01:00
|
|
|
Flags Flags
|
|
|
|
Db *sqlx.DB
|
|
|
|
StoreProvider StoreProvider
|
|
|
|
Log Logger
|
|
|
|
Product ProdInfo
|
2016-07-07 18:54:16 -07:00
|
|
|
}
|
2017-07-24 16:24:21 +01:00
|
|
|
|
|
|
|
const (
|
|
|
|
// SiteModeNormal serves app
|
|
|
|
SiteModeNormal = ""
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2017-07-24 16:24:21 +01:00
|
|
|
// SiteModeOffline serves offline.html
|
|
|
|
SiteModeOffline = "1"
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2017-07-24 16:24:21 +01:00
|
|
|
// SiteModeSetup tells Ember to serve setup route
|
|
|
|
SiteModeSetup = "2"
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2017-07-24 16:24:21 +01:00
|
|
|
// SiteModeBadDB redirects to db-error.html page
|
|
|
|
SiteModeBadDB = "3"
|
|
|
|
)
|
2017-08-08 18:21:38 +01:00
|
|
|
|
2018-09-12 20:03:34 +01:00
|
|
|
// StoreType represents name of database system
|
|
|
|
type StoreType string
|
2017-08-08 18:21:38 +01:00
|
|
|
|
|
|
|
const (
|
2018-09-12 20:03:34 +01:00
|
|
|
// StoreTypeMySQL is MySQL
|
|
|
|
StoreTypeMySQL StoreType = "MySQL"
|
|
|
|
|
|
|
|
// StoreTypePercona is Percona
|
|
|
|
StoreTypePercona StoreType = "Percona"
|
|
|
|
|
|
|
|
// StoreTypeMariaDB is MariaDB
|
|
|
|
StoreTypeMariaDB StoreType = "MariaDB"
|
|
|
|
|
|
|
|
// StoreTypePostgreSQL is PostgreSQL
|
|
|
|
StoreTypePostgreSQL StoreType = "PostgreSQL"
|
|
|
|
|
|
|
|
// StoreTypeMSSQL is Microsoft SQL Server
|
|
|
|
StoreTypeMSSQL StoreType = "MSSQL"
|
2017-08-08 18:21:38 +01:00
|
|
|
)
|
2018-05-10 15:10:15 +01:00
|
|
|
|
2018-09-14 18:00:24 +01:00
|
|
|
// StoreProvider defines a database provider.
|
|
|
|
type StoreProvider interface {
|
|
|
|
// Name of provider
|
|
|
|
Type() StoreType
|
2018-09-12 20:03:34 +01:00
|
|
|
|
|
|
|
// SQL driver name used to open DB connection.
|
2018-09-14 18:00:24 +01:00
|
|
|
DriverName() string
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2018-09-14 18:00:24 +01:00
|
|
|
// Database connection string parameters that must be present before connecting to DB.
|
|
|
|
Params() map[string]string
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2018-09-14 18:00:24 +01:00
|
|
|
// Example holds storage provider specific connection string format.
|
2018-09-12 20:03:34 +01:00
|
|
|
// used in error messages
|
2018-09-14 18:00:24 +01:00
|
|
|
Example() string
|
|
|
|
|
|
|
|
// DatabaseName holds the SQL database name where Documize tables live.
|
|
|
|
DatabaseName() string
|
|
|
|
|
|
|
|
// Make connection string with default parameters.
|
|
|
|
MakeConnectionString() string
|
|
|
|
|
|
|
|
// QueryMeta is how to extract version number, collation, character set from database provider.
|
|
|
|
QueryMeta() string
|
|
|
|
|
|
|
|
// QueryStartLock locks database tables.
|
|
|
|
QueryStartLock() string
|
|
|
|
|
|
|
|
// QueryFinishLock unlocks database tables.
|
|
|
|
QueryFinishLock() string
|
|
|
|
|
|
|
|
// QueryInsertProcessID returns database specific query that will
|
|
|
|
// insert ID of this running process.
|
|
|
|
QueryInsertProcessID() string
|
|
|
|
|
|
|
|
// QueryInsertProcessID returns database specific query that will
|
|
|
|
// delete ID of this running process.
|
|
|
|
QueryDeleteProcessID() string
|
|
|
|
|
|
|
|
// QueryRecordVersionUpgrade returns database specific insert statement
|
|
|
|
// that records the database version number.
|
|
|
|
QueryRecordVersionUpgrade(version int) string
|
|
|
|
|
|
|
|
// QueryGetDatabaseVersion returns the schema version number.
|
|
|
|
QueryGetDatabaseVersion() string
|
|
|
|
|
|
|
|
// QueryTableList returns a list tables in Documize database.
|
|
|
|
QueryTableList() string
|
|
|
|
|
|
|
|
// VerfiyVersion checks to see if actual database meets
|
|
|
|
// minimum version requirements.
|
|
|
|
VerfiyVersion(dbVersion string) (versionOK bool, minVerRequired string)
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2018-09-14 18:00:24 +01:00
|
|
|
// VerfiyCharacterCollation checks to see if actual database
|
|
|
|
// has correct character set and collation settings.
|
|
|
|
VerfiyCharacterCollation(charset, collation string) (charOK bool, requirements string)
|
2018-09-12 20:03:34 +01:00
|
|
|
}
|
|
|
|
|
2018-05-10 15:10:15 +01:00
|
|
|
const (
|
|
|
|
// CommunityEdition is AGPL product variant
|
|
|
|
CommunityEdition = "Community"
|
2018-09-12 20:03:34 +01:00
|
|
|
|
2018-05-10 15:10:15 +01:00
|
|
|
// EnterpriseEdition is commercial licensed product variant
|
|
|
|
EnterpriseEdition = "Enterprise"
|
|
|
|
)
|