conex-builder/README.org
2024-09-03 18:06:24 -06:00

140 lines
3.2 KiB
Org Mode

#+TITLE: Conex Builder Documentation
#+PROPERTY: header-args:sql :engine postgres :dbhost "localhost" :dbport 5432 :dbuser "conex" :dbpassword "1234" :database "iterone"
* Database
** Create DB
#+begin_src sh
sudo su - postgres
psql
#+end_src
Then:
#+BEGIN_SRC sql
CREATE DATABASE iterone OWNER conex;
#+END_SRC
** Sites table
#+BEGIN_SRC sql :results silent
DROP TABLE IF EXISTS changes;
DROP TABLE IF EXISTS payments;
DROP TABLE IF EXISTS sites;
CREATE TABLE sites (
id SERIAL PRIMARY KEY,
folder VARCHAR(35) UNIQUE NOT NULL,
status VARCHAR(4),
due TIMESTAMPTZ NOT NULL,
name VARCHAR(50),
sur VARCHAR(50),
email VARCHAR(100) NOT NULL,
phone VARCHAR(20),
code VARCHAR(2),
raw JSONB NOT NULL,
auth INTEGER,
valid TIMESTAMPTZ
);
#+END_SRC
#+BEGIN_SRC sql
SELECT * FROM sites;
#+END_SRC
#+RESULTS:
| id | folder | status | due | name | sur | email | phone | code | raw | auth | valid |
|----+--------+--------+-----+------+-----+-------+-------+------+-----+------+-------|
** Payments table
#+BEGIN_SRC sql :results silent
DROP TABLE IF EXISTS changes;
DROP TABLE IF EXISTS payments;
CREATE TABLE payments (
id SERIAL PRIMARY KEY,
capture VARCHAR(100) NOT NULL,
site INTEGER REFERENCES sites(id) NOT NULL,
amount DECIMAL(10, 2) NOT NULL,
currency VARCHAR(3) NOT NULL,
status VARCHAR(18) NOT NULL, -- PayPal capture status length -- https://developer.paypal.com/docs/api/orders/v2/#orders_capture
date TIMESTAMPTZ NOT NULL
);
#+END_SRC
#+BEGIN_SRC sql
SELECT * FROM payments;
#+END_SRC
#+RESULTS:
| id | capture | site | amount | currency | status | date |
|----+---------+------+--------+----------+--------+------|
* Error codes
** http.Error
** Fatalf
Fatal error will cause program shutdown by calling ~os.Exit(1)~.
*** Error 000: Missing credentials
*Package*: ~main~
*Function*: ~init()~
*Libraries*: ~os~, ~log~, ~github.com/joho/godotenv~
Authentication and other parameters are located in the ~.env~ file which mist be
located at the root of main binary execution.
Possible causes for error are:
- Binary execution directory doesn't have the ~.env~ file
- Missing parameters for initializing environment values
- Corruption of ~.env~ file
- Library error
Steps to troubleshoot:
1. Check ~.env~ exists
2. Check ~.env~ authentication values
3. Check ~.env~ file integrity
4. Update, rollback or troubleshoot library
*** Error 001: Can't connect to database
*Package*: ~main~
*Function*: ~init()~
*Libraries*: ~os~, ~log~
The ~db~ object manages database queries. This object is used to ping the
database, a correct ping depends on correctly set credentials, and properly
initialized ~db~ object.
Possible causes for error are:
- Wrong database credentials
- Missing database credentials
Steps to troubleshoot:
1. Check set, correct and valid credentials in ~.env~ file
*** Error: 002: Can't start server
*Package*: ~main~
*Function*: ~main()~
*Libraries*: ~os~, ~log~, ~net/http~, ~os/signal~
The server runs in a Goroutine, started on a port defined in ~.env~.
Possible causes for error are:
- Port is in use
- Port usage denied
Steps to troubleshoot:
1. Check set, correct and valid port in ~.env~ file