rebrand - and parameterization
parent
71a203dd53
commit
c81f19e700
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"name": "viscord",
|
||||
"name": "corner",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "viscord",
|
||||
"name": "corner",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@types/mysql": "^2.15.21",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "viscord",
|
||||
"name": "corner",
|
||||
"description": "Secure boilerplate for Electron app based on Vite",
|
||||
"private": true,
|
||||
"engines": {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ const mockMessages: Message[] = [
|
|||
|
||||
export default () => {
|
||||
const [messages, setMessages] = useState<Message[]>(mockMessages);
|
||||
const [hist, setHist] = useState(false);
|
||||
|
||||
const textBoxRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
|
|
@ -50,7 +51,7 @@ export default () => {
|
|||
setMessages([...messages, data]);
|
||||
},
|
||||
recent(data: { messages: Message[] }) {
|
||||
setMessages(data.messages);
|
||||
setMessages([...data.messages, ...messages]);
|
||||
},
|
||||
});
|
||||
registerRouter(actions);
|
||||
|
|
@ -60,11 +61,12 @@ export default () => {
|
|||
}, [messages]);
|
||||
|
||||
useEffect(() => {
|
||||
if(messages.length === 0) {
|
||||
if(!hist) {
|
||||
console.log('sending recents request');
|
||||
send('recent');
|
||||
setHist(true);
|
||||
}
|
||||
}, [messages]);
|
||||
}, [hist]);
|
||||
|
||||
const sendMessage = useCallback(() => {
|
||||
if(textBoxRef.current === null) return;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
DB_HOST=localhost
|
||||
DB_USER=root
|
||||
DB_PASSWORD=example
|
||||
DB_DB=viscord
|
||||
DB_DB=corner
|
||||
|
|
@ -1,12 +1,9 @@
|
|||
SET NAMES utf8;
|
||||
SET time_zone = '+00:00';
|
||||
SET foreign_key_checks = 0;
|
||||
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
-- SET NAMES utf8;
|
||||
-- SET time_zone = '+00:00';
|
||||
-- SET foreign_key_checks = 0;
|
||||
-- SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE DATABASE `viscord` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
|
||||
USE `viscord`;
|
||||
-- SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE `messages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
|
|
@ -21,7 +18,4 @@ CREATE TABLE `migrations` (
|
|||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO `migrations` ()
|
||||
VALUES ();
|
||||
|
||||
-- 2022-07-21 01:27:49
|
||||
|
|
@ -1,8 +1,2 @@
|
|||
|
||||
USE `viscord`;
|
||||
|
||||
ALTER TABLE `messages`
|
||||
ADD COLUMN `t_sent` BIGINT UNSIGNED AFTER `text`;
|
||||
|
||||
INSERT INTO `migrations` ()
|
||||
VALUES ();
|
||||
ADD COLUMN `t_sent` BIGINT UNSIGNED AFTER `text`;
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
|
||||
export const DB_HOST = 'localhost';
|
||||
export const DB_USER = 'root';
|
||||
export const DB_PASSWORD = 'example';
|
||||
export const DB_NAME = 'corner';
|
||||
|
|
@ -4,11 +4,13 @@ import { createConnection } from 'mysql';
|
|||
import { readdirSync, readFileSync } from 'fs';
|
||||
import { dirname, resolve } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { DB_HOST, DB_NAME, DB_PASSWORD, DB_USER } from '../constants';
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
const host = 'localhost';
|
||||
const user = 'root';
|
||||
const password = 'example';
|
||||
const host = DB_HOST;
|
||||
const user = DB_USER;
|
||||
const password = DB_PASSWORD;
|
||||
const database = DB_NAME;
|
||||
|
||||
interface Migration {
|
||||
sql: string;
|
||||
|
|
@ -35,6 +37,7 @@ export const connection = createConnection({
|
|||
host,
|
||||
user,
|
||||
password,
|
||||
database,
|
||||
});
|
||||
const migrationConnection = createConnection({
|
||||
host,
|
||||
|
|
@ -44,7 +47,7 @@ const migrationConnection = createConnection({
|
|||
});
|
||||
|
||||
const connected: Promise<null> = new Promise((res, rej) => {
|
||||
connection.connect((err) => {
|
||||
migrationConnection.connect((err) => {
|
||||
if(err === null) {
|
||||
console.log('connected to database!');
|
||||
res(null);
|
||||
|
|
@ -61,17 +64,23 @@ export async function update() {
|
|||
await connected;
|
||||
// determine version
|
||||
const currentVersion: number = await new Promise((resolve, rej) => {
|
||||
connection.query(`
|
||||
migrationConnection.query(`
|
||||
SELECT SCHEMA_NAME
|
||||
FROM INFORMATION_SCHEMA.SCHEMATA
|
||||
WHERE SCHEMA_NAME = 'viscord'
|
||||
WHERE SCHEMA_NAME = '${database}';
|
||||
`, async (err, res, fields) => {
|
||||
if(res.length === 0) {
|
||||
await new Promise((resolve, reject) => {
|
||||
migrationConnection.query(`CREATE DATABASE \`${database}\` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;`, (err, res) => {
|
||||
if(err) return reject(err);
|
||||
return resolve(res);
|
||||
});
|
||||
});
|
||||
resolve(0);
|
||||
} else {
|
||||
const version: number = await new Promise((resolve, reject) => {
|
||||
connection.query(`
|
||||
SELECT max(id) as 'version' FROM viscord.migrations;
|
||||
migrationConnection.query(`
|
||||
SELECT max(id) as 'version' FROM ${database}.migrations;
|
||||
`, function (err, results, fields) {
|
||||
resolve(results[0].version);
|
||||
});
|
||||
|
|
@ -87,17 +96,25 @@ export async function update() {
|
|||
console.log('database up to date!');
|
||||
} else {
|
||||
const difference = expectedVersion - currentVersion;
|
||||
console.log(`database ${difference} version${difference !== 1 ? 's' : ''} behind`);
|
||||
process.stdout.write(`database ${difference} version${difference !== 1 ? 's' : ''} behind`);
|
||||
// console.log(`${currentVersion} >>> ${expectedVersion}`);
|
||||
const neededMigrations = migrations.filter(m => m.version > currentVersion);
|
||||
let completedMigrations = 0;
|
||||
for(const migration of neededMigrations) {
|
||||
console.log(`${currentVersion} >>> ${migration.version}`);
|
||||
console.log(`${currentVersion + completedMigrations} >>> ${migration.version}`);
|
||||
await new Promise((resolve, reject) => {
|
||||
migrationConnection.query(migration.sql, (err, res) => {
|
||||
migrationConnection.query(`
|
||||
USE \`${database}\`;
|
||||
${migration.sql}
|
||||
INSERT INTO \`migrations\` ()
|
||||
VALUES ();
|
||||
`, (err, res) => {
|
||||
if(err !== null) return reject(err);
|
||||
console.log(`executed ${res.length} statement${res.length !== 0 ? 's' : ''}`);
|
||||
return resolve(void 0);
|
||||
});
|
||||
});
|
||||
completedMigrations ++;
|
||||
}
|
||||
}
|
||||
// console.log('database version:', currentVersion)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
INSERT INTO viscord.messages
|
||||
INSERT INTO messages
|
||||
(`text`, `from`, `uid`, `t_sent`)
|
||||
VALUES (
|
||||
?,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
SELECT * FROM viscord.messages
|
||||
SELECT * FROM messages
|
||||
ORDER BY t_sent
|
||||
LIMIT 100;
|
||||
|
|
@ -58,7 +58,7 @@ const setupServerPackageWatcher = () => {
|
|||
});
|
||||
|
||||
/** Proxy all logs */
|
||||
spawnProcess.stdout.on('data', d => d.toString().trim() && logger.info(d.toString().trim(), {timestamp: true}));
|
||||
spawnProcess.stdout.on('data', d => d.toString().trim() && d.toString().trim().split('\n').forEach(str => logger.info(str, {timestamp: true})));
|
||||
|
||||
/** Proxy error logs but stripe some noisy messages. See {@link stderrFilterPatterns} */
|
||||
spawnProcess.stderr.on('data', d => {
|
||||
|
|
|
|||
Reference in New Issue