mirror of
https://github.com/filecoin-project/slate.git
synced 2024-12-22 16:41:38 +03:00
postgres: sets up database for local auth and adds utility scripts and dotenv
This commit is contained in:
parent
afcf54c651
commit
fa35810a71
18
knexfile.js
Normal file
18
knexfile.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
if (process.env.NODE_ENV !== "www") {
|
||||||
|
console.log("[ prototype ] loading dotenv");
|
||||||
|
require("dotenv").config();
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
development: {
|
||||||
|
client: "pg",
|
||||||
|
connection: {
|
||||||
|
ssl: true,
|
||||||
|
port: 5432,
|
||||||
|
host: process.env.POSTGRES_HOSTNAME,
|
||||||
|
database: process.env.POSTGRES_DATABASE,
|
||||||
|
user: process.env.POSTGRES_ADMIN_USERNAME,
|
||||||
|
password: process.env.POSTGRES_ADMIN_PASSWORD,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
@ -1,9 +1,12 @@
|
|||||||
const path = require("path");
|
import path from "path";
|
||||||
|
|
||||||
export const POLLING_RATE = 5000;
|
export const POLLING_RATE = 5000;
|
||||||
export const POWERGATE_HOST = "http://pow.slate.textile.io:6002";
|
export const POWERGATE_HOST = "http://pow.slate.textile.io:6002";
|
||||||
|
|
||||||
export const AVATAR_STORAGE_URL = path.join(__dirname, "../public/static/system/");
|
export const AVATAR_STORAGE_URL = path.join(
|
||||||
|
__dirname,
|
||||||
|
"../public/static/system/"
|
||||||
|
);
|
||||||
export const FILE_STORAGE_URL = path.join(__dirname, "../public/static/files/");
|
export const FILE_STORAGE_URL = path.join(__dirname, "../public/static/files/");
|
||||||
|
|
||||||
export const GITHUB_URL = "https://github.com/filecoin-project/filecoin-client";
|
export const GITHUB_URL = "https://github.com/filecoin-project/filecoin-client";
|
||||||
|
11
node_common/database.js
Normal file
11
node_common/database.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
if (process.env.NODE_ENV !== "production") {
|
||||||
|
require("dotenv").config();
|
||||||
|
}
|
||||||
|
|
||||||
|
import configs from "~/knexfile";
|
||||||
|
import knex from "knex";
|
||||||
|
|
||||||
|
const envConfig = configs["development"];
|
||||||
|
const db = knex(envConfig);
|
||||||
|
|
||||||
|
module.exports = db;
|
@ -15,7 +15,10 @@
|
|||||||
"build-system": "rollup -c",
|
"build-system": "rollup -c",
|
||||||
"electron": "electron ./electron/main.js ",
|
"electron": "electron ./electron/main.js ",
|
||||||
"electron-pack": "electron-builder --dir",
|
"electron-pack": "electron-builder --dir",
|
||||||
"electron-dist": "electron-builder"
|
"electron-dist": "electron-builder",
|
||||||
|
"www-setup-database": "NODE_TLS_REJECT_UNAUTHORIZED=0 node ./scripts setup-database",
|
||||||
|
"www-seed-database": "NODE_TLS_REJECT_UNAUTHORIZED=0 node ./scripts seed-database",
|
||||||
|
"www-drop-database": "NODE_TLS_REJECT_UNAUTHORIZED=0 node ./scripts drop-database"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"appId": "com.slate",
|
"appId": "com.slate",
|
||||||
@ -51,8 +54,10 @@
|
|||||||
"formidable": "^1.2.2",
|
"formidable": "^1.2.2",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^9.0.1",
|
||||||
"isomorphic-fetch": "^2.2.1",
|
"isomorphic-fetch": "^2.2.1",
|
||||||
|
"knex": "^0.20.10",
|
||||||
"moment": "^2.27.0",
|
"moment": "^2.27.0",
|
||||||
"next": "^9.4.4",
|
"next": "^9.4.4",
|
||||||
|
"pg": "^8.3.0",
|
||||||
"prismjs": "^1.20.0",
|
"prismjs": "^1.20.0",
|
||||||
"react": "^16.12.0",
|
"react": "^16.12.0",
|
||||||
"react-dom": "^16.12.0",
|
"react-dom": "^16.12.0",
|
||||||
|
15
scripts/drop-database.js
Normal file
15
scripts/drop-database.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import configs from "~/knexfile";
|
||||||
|
import knex from "knex";
|
||||||
|
|
||||||
|
const envConfig = configs["development"];
|
||||||
|
|
||||||
|
console.log(`SETUP: database`, envConfig);
|
||||||
|
|
||||||
|
const db = knex(envConfig);
|
||||||
|
|
||||||
|
console.log(`RUNNING: drop-database.js`);
|
||||||
|
|
||||||
|
Promise.all([db.schema.dropTable("users"), db.schema.dropTable("slates")]);
|
||||||
|
|
||||||
|
console.log(`FINISHED: drop-database.js`);
|
||||||
|
console.log(` CTRL +C to return to terminal.`);
|
79
scripts/seed-database.js
Normal file
79
scripts/seed-database.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import configs from "~/knexfile";
|
||||||
|
import knex from "knex";
|
||||||
|
|
||||||
|
const envConfig = configs["development"];
|
||||||
|
|
||||||
|
console.log(`SETUP: database`, envConfig);
|
||||||
|
|
||||||
|
const db = knex(envConfig);
|
||||||
|
|
||||||
|
console.log(`RUNNING: seed-database.js`);
|
||||||
|
|
||||||
|
// --------------------------
|
||||||
|
// SCRIPTS
|
||||||
|
// --------------------------
|
||||||
|
|
||||||
|
const createUsersTable = db.schema.createTable("users", function(table) {
|
||||||
|
table
|
||||||
|
.uuid("id")
|
||||||
|
.primary()
|
||||||
|
.unique()
|
||||||
|
.notNullable()
|
||||||
|
.defaultTo(db.raw("uuid_generate_v4()"));
|
||||||
|
|
||||||
|
table
|
||||||
|
.timestamp("created_at")
|
||||||
|
.notNullable()
|
||||||
|
.defaultTo(db.raw("now()"));
|
||||||
|
|
||||||
|
table
|
||||||
|
.timestamp("updated_at")
|
||||||
|
.notNullable()
|
||||||
|
.defaultTo(db.raw("now()"));
|
||||||
|
|
||||||
|
table
|
||||||
|
.string("username")
|
||||||
|
.unique()
|
||||||
|
.nullable();
|
||||||
|
|
||||||
|
table
|
||||||
|
.string("email")
|
||||||
|
.unique()
|
||||||
|
.notNullable();
|
||||||
|
|
||||||
|
table.string("password").nullable();
|
||||||
|
table.string("salt").nullable();
|
||||||
|
table.jsonb("data").nullable();
|
||||||
|
});
|
||||||
|
|
||||||
|
const createSlatesTable = db.schema.createTable("slates", function(table) {
|
||||||
|
table
|
||||||
|
.uuid("id")
|
||||||
|
.primary()
|
||||||
|
.unique()
|
||||||
|
.notNullable()
|
||||||
|
.defaultTo(db.raw("uuid_generate_v4()"));
|
||||||
|
|
||||||
|
table
|
||||||
|
.timestamp("created_at")
|
||||||
|
.notNullable()
|
||||||
|
.defaultTo(db.raw("now()"));
|
||||||
|
|
||||||
|
table
|
||||||
|
.timestamp("updated_at")
|
||||||
|
.notNullable()
|
||||||
|
.defaultTo(db.raw("now()"));
|
||||||
|
|
||||||
|
table.timestamp("published_at").nullable();
|
||||||
|
|
||||||
|
table.jsonb("data").nullable();
|
||||||
|
});
|
||||||
|
|
||||||
|
// --------------------------
|
||||||
|
// RUN
|
||||||
|
// --------------------------
|
||||||
|
|
||||||
|
Promise.all([createUsersTable, createSlatesTable]);
|
||||||
|
|
||||||
|
console.log(`FINISHED: seed-database.js`);
|
||||||
|
console.log(` CTRL +C to return to terminal.`);
|
15
scripts/setup-database.js
Normal file
15
scripts/setup-database.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import configs from "~/knexfile";
|
||||||
|
import knex from "knex";
|
||||||
|
|
||||||
|
const envConfig = configs["development"];
|
||||||
|
|
||||||
|
console.log(`SETUP: database`, envConfig);
|
||||||
|
|
||||||
|
const db = knex(envConfig);
|
||||||
|
|
||||||
|
console.log(`RUNNING: setup-database.js`);
|
||||||
|
|
||||||
|
Promise.all([db.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"')]);
|
||||||
|
|
||||||
|
console.log(`FINISHED: setup-database.js`);
|
||||||
|
console.log(` CTRL +C to return to terminal.`);
|
10
server.js
10
server.js
@ -1,9 +1,16 @@
|
|||||||
|
if (process.env.NODE_ENV !== "www") {
|
||||||
|
console.log("[ prototype ] loading dotenv");
|
||||||
|
require("dotenv").config();
|
||||||
|
}
|
||||||
|
|
||||||
import * as Middleware from "./common/middleware";
|
import * as Middleware from "./common/middleware";
|
||||||
import * as Strings from "./common/strings";
|
import * as Strings from "./common/strings";
|
||||||
import * as Utilities from "./node_common/utilities";
|
import * as Utilities from "./node_common/utilities";
|
||||||
import * as Constants from "./node_common/constants";
|
import * as Constants from "./node_common/constants";
|
||||||
|
import * as Database from "./node_common/database";
|
||||||
|
|
||||||
import { createPow, ffs } from "@textile/powergate-client";
|
import { createPow, ffs } from "@textile/powergate-client";
|
||||||
|
|
||||||
// NOTE(jim):
|
// NOTE(jim):
|
||||||
// https://github.com/textileio/js-powergate-client
|
// https://github.com/textileio/js-powergate-client
|
||||||
const PowerGate = createPow({ host: Constants.POWERGATE_HOST });
|
const PowerGate = createPow({ host: Constants.POWERGATE_HOST });
|
||||||
@ -437,6 +444,9 @@ app.prepare().then(async () => {
|
|||||||
|
|
||||||
console.log(`[ prototype ] client: http://localhost:${port}`);
|
console.log(`[ prototype ] client: http://localhost:${port}`);
|
||||||
console.log(`[ prototype ] constants:`, Constants);
|
console.log(`[ prototype ] constants:`, Constants);
|
||||||
|
console.log(
|
||||||
|
`[ prototype ] .env postgres hostname: ${process.env.POSTGRES_HOSTNAME}`
|
||||||
|
);
|
||||||
|
|
||||||
if (!productionWeb) {
|
if (!productionWeb) {
|
||||||
await setIntervalViewerUpdatesUnsafe();
|
await setIntervalViewerUpdatesUnsafe();
|
||||||
|
Loading…
Reference in New Issue
Block a user