rebrand - and parameterization

cordova
Bronwen 2022-07-21 05:38:58 -04:00
parent 71a203dd53
commit c81f19e700
11 changed files with 52 additions and 39 deletions

4
package-lock.json generated
View File

@ -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",

View File

@ -1,5 +1,5 @@
{
"name": "viscord",
"name": "corner",
"description": "Secure boilerplate for Electron app based on Vite",
"private": true,
"engines": {

View File

@ -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;

View File

@ -1,4 +1,4 @@
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=example
DB_DB=viscord
DB_DB=corner

View File

@ -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

View File

@ -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`;

View File

@ -0,0 +1,6 @@
export const DB_HOST = 'localhost';
export const DB_USER = 'root';
export const DB_PASSWORD = 'example';
export const DB_NAME = 'corner';

View File

@ -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)

View File

@ -1,4 +1,4 @@
INSERT INTO viscord.messages
INSERT INTO messages
(`text`, `from`, `uid`, `t_sent`)
VALUES (
?,

View File

@ -1,3 +1,3 @@
SELECT * FROM viscord.messages
SELECT * FROM messages
ORDER BY t_sent
LIMIT 100;

View File

@ -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 => {