1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 21:29:42 +02:00
documize/core/env/runtime.go

129 lines
3.6 KiB
Go
Raw Normal View History

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 {
Flags Flags
Db *sqlx.DB
StoreProvider StoreProvider
Log Logger
Product ProdInfo
2016-07-07 18:54:16 -07:00
}
const (
// SiteModeNormal serves app
SiteModeNormal = ""
2018-09-12 20:03:34 +01:00
// SiteModeOffline serves offline.html
SiteModeOffline = "1"
2018-09-12 20:03:34 +01:00
// SiteModeSetup tells Ember to serve setup route
SiteModeSetup = "2"
2018-09-12 20:03:34 +01:00
// SiteModeBadDB redirects to db-error.html page
SiteModeBadDB = "3"
)
2018-09-12 20:03:34 +01:00
// StoreType represents name of database system
type StoreType string
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"
)
// 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.
DriverName() string
2018-09-12 20:03:34 +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
// Example holds storage provider specific connection string format.
2018-09-12 20:03:34 +01:00
// used in error messages
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
// 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
}
const (
// CommunityEdition is AGPL product variant
CommunityEdition = "Community"
2018-09-12 20:03:34 +01:00
// EnterpriseEdition is commercial licensed product variant
EnterpriseEdition = "Enterprise"
)