mirror of
https://github.com/getredash/redash.git
synced 2025-12-25 01:03:20 -05:00
Create db task instead of SQL tables.
This commit is contained in:
15
manage.py
15
manage.py
@@ -39,6 +39,12 @@ def start_server(port, debug):
|
||||
app.run(debug=debug, port=port)
|
||||
|
||||
|
||||
def create_db(create_tables, drop_tables):
|
||||
from redash.models import create_db
|
||||
|
||||
create_db(create_tables, drop_tables)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
channel = logging.StreamHandler()
|
||||
logging.getLogger().addHandler(channel)
|
||||
@@ -55,10 +61,19 @@ if __name__ == '__main__':
|
||||
server_parser.add_argument('--port',
|
||||
default=8888,
|
||||
help='port to bind to')
|
||||
db_parser = subparsers.add_parser('db', help='database operations')
|
||||
db_parser.add_argument('--create-tables',
|
||||
action='store_true',
|
||||
help='Create all tables')
|
||||
db_parser.add_argument('--drop-tables',
|
||||
action='store_true',
|
||||
help='Drop all tables')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == "worker":
|
||||
start_workers()
|
||||
elif args.command == 'db':
|
||||
create_db(args.create_tables, args.drop_tables)
|
||||
elif args.command == 'server':
|
||||
start_server(args.port, args.debug)
|
||||
@@ -1,56 +0,0 @@
|
||||
BEGIN;
|
||||
CREATE TABLE "query_results" (
|
||||
"id" serial NOT NULL PRIMARY KEY,
|
||||
"query_hash" varchar(32) NOT NULL,
|
||||
"query" text NOT NULL,
|
||||
"data" text NOT NULL,
|
||||
"runtime" double precision NOT NULL,
|
||||
"retrieved_at" timestamp with time zone NOT NULL
|
||||
)
|
||||
;
|
||||
CREATE TABLE "queries" (
|
||||
"id" serial NOT NULL PRIMARY KEY,
|
||||
"latest_query_data_id" integer REFERENCES "query_results" ("id") DEFERRABLE INITIALLY DEFERRED,
|
||||
"name" varchar(255) NOT NULL,
|
||||
"description" varchar(4096),
|
||||
"query" text NOT NULL,
|
||||
"query_hash" varchar(32) NOT NULL,
|
||||
"api_key" varchar(40),
|
||||
"ttl" integer NOT NULL,
|
||||
"user" varchar(360) NOT NULL,
|
||||
"created_at" timestamp with time zone NOT NULL
|
||||
)
|
||||
;
|
||||
CREATE TABLE "dashboards" (
|
||||
"id" serial NOT NULL PRIMARY KEY,
|
||||
"slug" varchar(140) NOT NULL,
|
||||
"name" varchar(100) NOT NULL,
|
||||
"user" varchar(360) NOT NULL,
|
||||
"layout" text NOT NULL,
|
||||
"is_archived" boolean NOT NULL
|
||||
)
|
||||
;
|
||||
CREATE TABLE "visualizations" (
|
||||
"id" serial NOT NULL PRIMARY KEY,
|
||||
"type" varchar(100) NOT NULL,
|
||||
"query_id" integer NOT NULL REFERENCES "queries" ("id") DEFERRABLE INITIALLY DEFERRED,
|
||||
"name" varchar(255) NOT NULL,
|
||||
"description" varchar(4096),
|
||||
"options" text NOT NULL
|
||||
)
|
||||
;
|
||||
CREATE TABLE "widgets" (
|
||||
"id" serial NOT NULL PRIMARY KEY,
|
||||
"type" varchar(100) NOT NULL,
|
||||
"width" integer NOT NULL,
|
||||
"options" text NOT NULL,
|
||||
"query_id" integer,
|
||||
"visualization_id" integer NOT NULL REFERENCES "visualizations" ("id") DEFERRABLE INITIALLY DEFERRED,
|
||||
"dashboard_id" integer NOT NULL REFERENCES "dashboards" ("id") DEFERRABLE INITIALLY DEFERRED
|
||||
)
|
||||
;
|
||||
CREATE INDEX "queries_latest_query_data_id" ON "queries" ("latest_query_data_id");
|
||||
CREATE INDEX "widgets_query_id" ON "widgets" ("query_id");
|
||||
CREATE INDEX "widgets_dashboard_id" ON "widgets" ("dashboard_id");
|
||||
|
||||
COMMIT;
|
||||
@@ -180,4 +180,19 @@ class Widget(db.Model):
|
||||
}
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s=>%s" % (self.id, self.dashboard_id)
|
||||
return u"%s=>%s" % (self.id, self.dashboard_id)
|
||||
|
||||
|
||||
def create_db(create_tables, drop_tables):
|
||||
all_models = (QueryResult, Query, Dashboard, Widget)
|
||||
|
||||
db.connect_db()
|
||||
|
||||
for model in all_models:
|
||||
if drop_tables and model.table_exists():
|
||||
model.drop_table()
|
||||
|
||||
if create_tables:
|
||||
model.create_table()
|
||||
|
||||
db.close_db(None)
|
||||
|
||||
Reference in New Issue
Block a user