move to 3ks

This commit is contained in:
Timothy Preble 2024-11-25 12:51:41 -05:00
commit c0dac6b508
8 changed files with 314 additions and 0 deletions

67
.gitignore vendored Normal file
View File

@ -0,0 +1,67 @@
#Visual Studio Code Settings
.vscode/
#Ignore Real Config Files a distributed one is included for structure.s
config.js
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# next.js build output
.next

52
README.md Normal file
View File

@ -0,0 +1,52 @@
#tsAPI3 -- Twitter API
This project uses a local database to run stats on specified hash-tags.
#Notes
https://medium.com/@rdsubhas/docker-for-development-common-problems-and-solutions-95b25cae41eb
#SCP
http://www.hypexr.org/linux_scp_help.php
https://www.howtoforge.com/tutorial/ssh-and-scp-with-public-key-authentication/
#Package & Ship app to Pi
#Move to parent (Code) Directory
cd /users/timpreble/Documents/code
#Zip Main Folder + Files only.
https://www.gnu.org/software/tar/manual/tar.html#SEC35
tar
-c : create
-z : read or write archives through gzip, allowing tar to directly operate on several kinds of compressed archives transparently
-f : new file name
-v : verbose
tar -czf folder_name.tar.gz folder_name/
tar -czf tsAPI3.tar.gz tsAPI3/
#Ship Zip File to TSAPI3
scp scp tsAPI3.tar.gz timp@RPi3(IPADDRESS):/docker-data
#ssh to RPi3
ssh RPi3
#move into correct directory & uncompress archive
cd /docker-data
tar -zxvf tsAPI3.tar.gz
#Remove original archive
rm tar tsAPI3.tar.gz
#Move into api dir & build docker image
cd /docker-data/tsAPI3
docker build -t timpreble/tsapi:3.0 .
#Run the container
docker run -d --name tsapi3 --restart=always -p 3001:3001 timpreble/tsapi:3.1

19
config.js.dist Executable file
View File

@ -0,0 +1,19 @@
'use strict'
var mysql = require('mysql');
module.exports = {
name: 'TS-api3',
hostname : 'http://localhost',
version: '3.0.1',
env: process.env.NODE_ENV || 'development',
port: process.env.PORT || 3000,
db: {
get : mysql.createConnection({
host : 'ip or host name here',
user : 'yOuR_UsEr',
password : 'S0mePa$$w0rd',
database : 'YourDBs'
})
}
}

14
dockerfile Normal file
View File

@ -0,0 +1,14 @@
FROM arm32v7/node:alpine
#Create App Directory
WORKDIR /usr/src/api
#Install Dependencies
COPY package.json .
RUN npm install
#Bundle ap source
COPY . .
EXPOSE 3001
CMD ["npm", "start"]

76
main.js.backup Normal file
View File

@ -0,0 +1,76 @@
/**
* Module Dependencies
*/
const config = require('./config'),
restify = require('restify'),
mysql = require('mysql')
/**
* Initialize Server
*/
const server = restify.createServer({
name : config.name,
version : config.version,
url : config.hostname
});
var connection = config.db.get;
server.use(restify.plugins.acceptParser(server.acceptable));
server.use(restify.plugins.queryParser());
server.use(restify.plugins.bodyParser());
/*server.get('/echo/:name', function (req, res, next) {
res.send(req.params);
return next();
});*/
//rest api to get all results
server.get('/employees', function (req, res) {
//connection.query('select * from tracking limit 10', function (error, results, fields) {
connection.query('CALL CP_RPT_TodaysCounts();', function (error, results, fields) {
if (error) throw error;
res.end(JSON.stringify(results));
});
});
//rest api to get a single employee data
server.get('/employees/:id', function (req, res) {
connection.query('select * from employee where id=?', [req.params.id], function (error, results, fields) {
if (error) throw error;
res.end(JSON.stringify(results));
});
});
//rest api to create a new record into mysql database
server.post('/employees', function (req, res) {
var postData = req.body;
connection.query('INSERT INTO employee SET ?', postData, function (error, results, fields) {
if (error) throw error;
res.end(JSON.stringify(results));
});
});
//rest api to update record into mysql database
server.put('/employees', function (req, res) {
connection.query('UPDATE `employee` SET `employee_name`=?,`employee_salary`=?,`employee_age`=? where `id`=?', [req.body.employee_name,req.body.employee_salary, req.body.employee_age, req.body.id], function (error, results, fields) {
if (error) throw error;
res.end(JSON.stringify(results));
});
});
//rest api to delete record from mysql database
/*server.delete('/employees/:id', function (req, res) {
connection.query('DELETE FROM `employee` WHERE `id`=?', [req.params.id], function (error, results, fields) {
if (error) throw error;
res.end('Record has been deleted!');
});
});*/
server.get('/', function(req, res){
console.log('Welcome Nodejs restify');
});
server.listen(3001, function () {
console.log('%s listening at %s', server.name, server.url);
});

16
package.json Executable file
View File

@ -0,0 +1,16 @@
{
"name": "nodejs-restapi-example",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"mysql": "^2.14.1",
"restify": "^5.2.0"
}
}

4
run.txt Normal file
View File

@ -0,0 +1,4 @@
sudo docker build -t timpreble/tsapi3:1.0.0 .
sudo docker run -d -p 3001:3001 --name tsapi3.1 --restart=always timpreble/tsapi3:1.0.0

66
server.js Executable file
View File

@ -0,0 +1,66 @@
/**
* Module Dependencies
*/
const config = require('./config'),
restify = require('restify'),
mysql = require('mysql')
/**
* Initialize Server
*/
const server = restify.createServer({
name : config.name,
version : config.version,
url : config.hostname
});
var connection = config.db.get;
server.use(restify.plugins.acceptParser(server.acceptable));
server.use(restify.plugins.queryParser());
server.use(restify.plugins.bodyParser());
/*server.get('/echo/:name', function (req, res, next) {
res.send(req.params);
return next();
});*/
//rest api to get all results
server.get('/api/today', function (req, res) {
//connection.query('select * from tracking limit 10', function (error, results, fields) {
connection.query('CALL CP_RPT_TodaysCounts();', function (error, results, fields) {
if (error) throw error;
res.end(JSON.stringify(results));
//console.log(results);
//res.end();
});
});
server.get('/api/campaign',function(req, res){
connection.query('CALL CP_RPT_TweetsByScreenName ();',function(error, results, fields){
if(error) throw error;
//https://www.sitepoint.com/using-node-mysql-javascript-client/
res.end(JSON.stringify(results));
//res.end(results);
});
});
/*
server.get('',function(){
connection.query('',function(){});
});
*/
//rest api to get a single employee data
//rest api to create a new record into mysql database
//rest api to update record into mysql database
//rest api to delete record from mysql database
server.get('/', function(req, res){
console.log('Welcome Nodejs restify');
});
server.listen(3001, function () {
console.log('%s listening at %s', server.name, server.url);
});