22CREATE DATABASE IF NOT EXISTS barcode_wms;
33USE barcode_wms;
44
5+ -- Symbology Reference Table - SINGLE SOURCE OF TRUTH
6+ DROP TABLE IF EXISTS symbologies;
7+ CREATE TABLE symbologies (
8+ id INT PRIMARY KEY ,
9+ name VARCHAR (50 ) NOT NULL ,
10+ UNIQUE KEY unique_id (id),
11+ UNIQUE KEY unique_name (name)
12+ );
13+
14+ -- Insert EXACT values from Android enum EBarcodesSymbologies.java
15+ INSERT INTO symbologies (id, name) VALUES
16+ (- 1 , ' UNKNOWN' ),
17+ (0 , ' EAN 8' ),
18+ (1 , ' EAN 13' ),
19+ (2 , ' UPC A' ),
20+ (3 , ' UPC E' ),
21+ (4 , ' AZTEC' ),
22+ (5 , ' CODABAR' ),
23+ (6 , ' CODE128' ),
24+ (7 , ' CODE39' ),
25+ (8 , ' I2OF5' ),
26+ (9 , ' GS1 DATABAR' ),
27+ (10 , ' DATAMATRIX' ),
28+ (11 , ' GS1 DATABAR EXPANDED' ),
29+ (12 , ' MAILMARK' ),
30+ (13 , ' MAXICODE' ),
31+ (14 , ' PDF417' ),
32+ (15 , ' QRCODE' ),
33+ (16 , ' DOTCODE' ),
34+ (17 , ' GRID MATRIX' ),
35+ (18 , ' GS1 DATAMATRIX' ),
36+ (19 , ' GS1 QRCODE' ),
37+ (20 , ' MICROQR' ),
38+ (21 , ' MICROPDF' ),
39+ (22 , ' USPOSTNET' ),
40+ (23 , ' USPLANET' ),
41+ (24 , ' UK POSTAL' ),
42+ (25 , ' JAPANESE POSTAL' ),
43+ (26 , ' AUSTRALIAN POSTAL' ),
44+ (27 , ' CANADIAN POSTAL' ),
45+ (28 , ' DUTCH POSTAL' ),
46+ (29 , ' US4STATE' ),
47+ (30 , ' US4STATE FICS' ),
48+ (31 , ' MSI' ),
49+ (32 , ' CODE93' ),
50+ (33 , ' TRIOPTIC39' ),
51+ (34 , ' D2OF5' ),
52+ (35 , ' CHINESE 2OF5' ),
53+ (36 , ' KOREAN 3OF5' ),
54+ (37 , ' CODE11' ),
55+ (38 , ' TLC39' ),
56+ (39 , ' HANXIN' ),
57+ (40 , ' MATRIX 2OF5' ),
58+ (41 , ' UPCE1' ),
59+ (42 , ' GS1 DATABAR LIM' ),
60+ (43 , ' FINNISH POSTAL 4S' ),
61+ (44 , ' COMPOSITE AB' ),
62+ (45 , ' COMPOSITE C' );
63+
564-- Table to store barcode capture sessions
665CREATE TABLE IF NOT EXISTS capture_sessions (
766 id INT AUTO_INCREMENT PRIMARY KEY ,
867 session_timestamp DATETIME NOT NULL ,
968 device_info VARCHAR (500 ),
69+ device_ip VARCHAR (45 ),
1070 total_barcodes INT DEFAULT 0 ,
1171 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
1272 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
1373 INDEX idx_session_timestamp (session_timestamp),
14- INDEX idx_created_at (created_at)
74+ INDEX idx_created_at (created_at),
75+ INDEX idx_device_ip (device_ip)
1576);
1677
1778-- Table to store individual barcode data
@@ -35,89 +96,36 @@ CREATE TABLE IF NOT EXISTS barcodes (
3596 INDEX idx_processed (processed)
3697);
3798
38- -- Table to store barcode symbology mappings (based on Android app constants)
39- CREATE TABLE IF NOT EXISTS symbology_types (
40- id INT PRIMARY KEY ,
41- name VARCHAR (100 ) NOT NULL UNIQUE,
42- description VARCHAR (200 ),
43- active BOOLEAN DEFAULT TRUE
44- );
45-
46- -- Insert symbology types based on Android app EBarcodesSymbologies
47- INSERT INTO symbology_types (id, name, description) VALUES
48- (0 , ' UNKNOWN' , ' Unknown symbology type' ),
49- (1 , ' AUSTRALIAN_POSTAL' , ' Australian Postal barcode' ),
50- (2 , ' AZTEC' , ' Aztec 2D barcode' ),
51- (3 , ' CANADIAN_POSTAL' , ' Canadian Postal barcode' ),
52- (4 , ' CHINESE_2OF5' , ' Chinese 2 of 5 barcode' ),
53- (5 , ' CODABAR' , ' Codabar barcode' ),
54- (6 , ' CODE11' , ' Code 11 barcode' ),
55- (7 , ' CODE39' , ' Code 39 barcode' ),
56- (8 , ' CODE93' , ' Code 93 barcode' ),
57- (9 , ' CODE128' , ' Code 128 barcode' ),
58- (10 , ' COMPOSITE_AB' , ' Composite AB barcode' ),
59- (11 , ' COMPOSITE_C' , ' Composite C barcode' ),
60- (12 , ' D2OF5' , ' Discrete 2 of 5 barcode' ),
61- (13 , ' DATAMATRIX' , ' Data Matrix 2D barcode' ),
62- (14 , ' DOTCODE' , ' DotCode 2D barcode' ),
63- (15 , ' DUTCH_POSTAL' , ' Dutch Postal barcode' ),
64- (16 , ' EAN_8' , ' EAN-8 barcode' ),
65- (17 , ' EAN_13' , ' EAN-13 barcode' ),
66- (18 , ' FINNISH_POSTAL_4S' , ' Finnish Postal 4-State barcode' ),
67- (19 , ' GRID_MATRIX' , ' Grid Matrix 2D barcode' ),
68- (20 , ' GS1_DATABAR' , ' GS1 DataBar barcode' ),
69- (21 , ' GS1_DATABAR_EXPANDED' , ' GS1 DataBar Expanded barcode' ),
70- (22 , ' GS1_DATABAR_LIM' , ' GS1 DataBar Limited barcode' ),
71- (23 , ' GS1_DATAMATRIX' , ' GS1 Data Matrix barcode' ),
72- (24 , ' GS1_QRCODE' , ' GS1 QR Code barcode' ),
73- (25 , ' HANXIN' , ' Han Xin Code 2D barcode' ),
74- (26 , ' I2OF5' , ' Interleaved 2 of 5 barcode' ),
75- (27 , ' JAPANESE_POSTAL' , ' Japanese Postal barcode' ),
76- (28 , ' KOREAN_3OF5' , ' Korean 3 of 5 barcode' ),
77- (29 , ' MAILMARK' , ' Royal Mail Mailmark barcode' ),
78- (30 , ' MATRIX_2OF5' , ' Matrix 2 of 5 barcode' ),
79- (31 , ' MAXICODE' , ' MaxiCode 2D barcode' ),
80- (32 , ' MICROPDF' , ' MicroPDF417 barcode' ),
81- (33 , ' MICROQR' , ' Micro QR Code barcode' ),
82- (34 , ' MSI' , ' MSI barcode' ),
83- (35 , ' PDF417' , ' PDF417 2D barcode' ),
84- (36 , ' QRCODE' , ' QR Code 2D barcode' ),
85- (37 , ' TLC39' , ' TLC-39 barcode' ),
86- (38 , ' TRIOPTIC39' , ' Trioptic Code 39 barcode' ),
87- (39 , ' UK_POSTAL' , ' UK Postal barcode' ),
88- (40 , ' UPC_A' , ' UPC-A barcode' ),
89- (41 , ' UPC_E' , ' UPC-E barcode' ),
90- (42 , ' UPCE1' , ' UPC-E1 barcode' ),
91- (43 , ' USPLANET' , ' USPS PLANET barcode' ),
92- (44 , ' USPOSTNET' , ' USPS POSTNET barcode' ),
93- (45 , ' US4STATE' , ' USPS 4-State barcode' ),
94- (46 , ' US4STATE_FICS' , ' USPS 4-State FICS barcode' );
9599
96100-- Create view for easy barcode data retrieval with symbology names
101+ DROP VIEW IF EXISTS barcode_details;
97102CREATE VIEW barcode_details AS
98103SELECT
99104 b .id ,
100105 b .session_id ,
101106 b .value ,
102107 b .symbology ,
103- COALESCE(st .name , ' UNKNOWN' ) as symbology_name,
108+ COALESCE(s .name , ' UNKNOWN' ) as symbology_name,
104109 b .quantity ,
105110 b .timestamp ,
106111 b .processed ,
107112 b .notes ,
108113 b .created_at ,
109114 cs .session_timestamp ,
110- cs .device_info
115+ cs .device_info ,
116+ cs .device_ip
111117FROM barcodes b
112- LEFT JOIN symbology_types st ON b .symbology = st .id
118+ LEFT JOIN symbologies s ON b .symbology = s .id
113119LEFT JOIN capture_sessions cs ON b .session_id = cs .id ;
114120
115121-- Create view for session statistics
122+ DROP VIEW IF EXISTS session_statistics;
116123CREATE VIEW session_statistics AS
117124SELECT
118125 cs .id ,
119126 cs .session_timestamp ,
120127 cs .device_info ,
128+ cs .device_ip ,
121129 cs .created_at ,
122130 COUNT (b .id ) as total_barcodes,
123131 COUNT (DISTINCT b .symbology ) as unique_symbologies,
@@ -128,7 +136,7 @@ SELECT
128136 COUNT (CASE WHEN b .processed = FALSE THEN 1 END) as pending_count
129137FROM capture_sessions cs
130138LEFT JOIN barcodes b ON cs .id = b .session_id
131- GROUP BY cs .id , cs .session_timestamp , cs .device_info , cs .created_at ;
139+ GROUP BY cs .id , cs .session_timestamp , cs .device_info , cs .device_ip , cs . created_at ;
132140
133141-- Sample data for testing (optional)
134142-- INSERT INTO capture_sessions (session_timestamp, device_info, total_barcodes)
0 commit comments