Compare commits

..

No commits in common. "47bb7aacdf2430e86f2e546691a4c0e3c86fc99a" and "813823111228b0f85937d418ac51132a6349f634" have entirely different histories.

4 changed files with 82 additions and 158 deletions

View File

@ -1033,316 +1033,271 @@ brief\\_05|schema||user_brief05||UPDATE|G</Grants>
</collation>
<schema id="324" parent="1" name="brief_05">
<Current>1</Current>
<LastIntrospectionLocalTimestamp>2024-04-29.11:31:14</LastIntrospectionLocalTimestamp>
<LastIntrospectionLocalTimestamp>2024-04-29.10:08:31</LastIntrospectionLocalTimestamp>
<CollationName>latin1_swedish_ci</CollationName>
</schema>
<schema id="325" parent="1" name="information_schema">
<CollationName>utf8_general_ci</CollationName>
</schema>
<user id="326" parent="1" name="user_brief05"/>
<routine id="327" parent="324" name="CheckVehicleAvailability">
<Definer>user_brief05@%</Definer>
<RoutineKind>procedure</RoutineKind>
<SourceTextLength>91</SourceTextLength>
</routine>
<routine id="328" parent="324" name="IsVehicleAvailable">
<Definer>user_brief05@%</Definer>
<Deterministic>1</Deterministic>
<RoutineKind>function</RoutineKind>
<SourceTextLength>111</SourceTextLength>
</routine>
<table id="329" parent="324" name="brands">
<table id="327" parent="324" name="brands">
<Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName>
</table>
<table id="330" parent="324" name="categories">
<table id="328" parent="324" name="categories">
<Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName>
</table>
<table id="331" parent="324" name="models">
<table id="329" parent="324" name="models">
<Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName>
</table>
<table id="332" parent="324" name="rent">
<table id="330" parent="324" name="rent">
<Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName>
</table>
<table id="333" parent="324" name="users">
<table id="331" parent="324" name="users">
<Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName>
</table>
<table id="334" parent="324" name="vehicles">
<table id="332" parent="324" name="vehicles">
<Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName>
</table>
<argument id="335" parent="327" name="vehicleId">
<DasType>varchar(36)|0s</DasType>
<Position>1</Position>
</argument>
<argument id="336" parent="328">
<ArgumentDirection>R</ArgumentDirection>
<DasType>tinyint(1)|0s</DasType>
</argument>
<argument id="337" parent="328" name="veh_id">
<DasType>varchar(36)|0s</DasType>
<Position>1</Position>
</argument>
<column id="338" parent="329" name="id">
<column id="333" parent="327" name="id">
<DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull>
<Position>1</Position>
</column>
<column id="339" parent="329" name="slug_name">
<column id="334" parent="327" name="slug_name">
<DasType>varchar(32)|0s</DasType>
<Position>2</Position>
</column>
<column id="340" parent="329" name="display_name">
<column id="335" parent="327" name="display_name">
<DasType>varchar(32)|0s</DasType>
<Position>3</Position>
</column>
<column id="341" parent="329" name="image_blob">
<column id="336" parent="327" name="image_blob">
<DasType>blob|0s</DasType>
<Position>4</Position>
</column>
<index id="342" parent="329" name="PRIMARY">
<index id="337" parent="327" name="PRIMARY">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="343" parent="329" name="slug_name">
<index id="338" parent="327" name="slug_name">
<ColNames>slug_name</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<key id="344" parent="329" name="PRIMARY">
<key id="339" parent="327" name="PRIMARY">
<NameSurrogate>1</NameSurrogate>
<Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key>
<key id="345" parent="329" name="slug_name">
<key id="340" parent="327" name="slug_name">
<UnderlyingIndexName>slug_name</UnderlyingIndexName>
</key>
<column id="346" parent="330" name="id">
<column id="341" parent="328" name="id">
<DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull>
<Position>1</Position>
</column>
<column id="347" parent="330" name="slug_name">
<column id="342" parent="328" name="slug_name">
<DasType>varchar(36)|0s</DasType>
<Position>2</Position>
</column>
<column id="348" parent="330" name="display_name">
<column id="343" parent="328" name="display_name">
<DasType>varchar(32)|0s</DasType>
<Position>3</Position>
</column>
<index id="349" parent="330" name="PRIMARY">
<index id="344" parent="328" name="PRIMARY">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<key id="350" parent="330" name="PRIMARY">
<key id="345" parent="328" name="PRIMARY">
<NameSurrogate>1</NameSurrogate>
<Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key>
<column id="351" parent="331" name="id">
<column id="346" parent="329" name="id">
<DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull>
<Position>1</Position>
</column>
<column id="352" parent="331" name="slug_name">
<column id="347" parent="329" name="slug_name">
<DasType>varchar(32)|0s</DasType>
<Position>2</Position>
</column>
<column id="353" parent="331" name="display_name">
<column id="348" parent="329" name="display_name">
<DasType>varchar(32)|0s</DasType>
<Position>3</Position>
</column>
<column id="354" parent="331" name="brand_id">
<column id="349" parent="329" name="brand_id">
<DasType>varchar(36)|0s</DasType>
<Position>4</Position>
</column>
<column id="355" parent="331" name="category_id">
<column id="350" parent="329" name="category_id">
<DasType>varchar(36)|0s</DasType>
<Position>5</Position>
</column>
<column id="356" parent="331" name="image_blob">
<column id="351" parent="329" name="image_blob">
<DasType>blob|0s</DasType>
<Position>6</Position>
</column>
<column id="357" parent="331" name="is_trending">
<column id="352" parent="329" name="is_trending">
<DasType>tinyint(1)|0s</DasType>
<Position>7</Position>
</column>
<column id="358" parent="331" name="base_price">
<column id="353" parent="329" name="base_price">
<DasType>float|0s</DasType>
<Position>8</Position>
</column>
<index id="359" parent="331" name="PRIMARY">
<index id="354" parent="329" name="PRIMARY">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="360" parent="331" name="slug_name">
<index id="355" parent="329" name="slug_name">
<ColNames>slug_name</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<key id="361" parent="331" name="PRIMARY">
<key id="356" parent="329" name="PRIMARY">
<NameSurrogate>1</NameSurrogate>
<Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key>
<key id="362" parent="331" name="slug_name">
<key id="357" parent="329" name="slug_name">
<UnderlyingIndexName>slug_name</UnderlyingIndexName>
</key>
<column id="363" parent="332" name="vehicle_id">
<column id="358" parent="330" name="vehicle_id">
<DasType>varchar(36)|0s</DasType>
<Position>1</Position>
</column>
<column id="364" parent="332" name="user_id">
<column id="359" parent="330" name="user_id">
<DasType>varchar(36)|0s</DasType>
<Position>2</Position>
</column>
<column id="365" parent="332" name="active">
<column id="360" parent="330" name="active">
<DasType>tinyint(1)|0s</DasType>
<Position>3</Position>
</column>
<column id="366" parent="332" name="iat">
<column id="361" parent="330" name="iat">
<DasType>date|0s</DasType>
<Position>4</Position>
</column>
<column id="367" parent="332" name="eat">
<column id="362" parent="330" name="eat">
<DasType>date|0s</DasType>
<Position>5</Position>
</column>
<column id="368" parent="332" name="need_survey">
<column id="363" parent="330" name="need_survey">
<DasType>tinyint(1)|0s</DasType>
<Position>6</Position>
</column>
<column id="369" parent="332" name="km_at_start">
<column id="364" parent="330" name="km_at_start">
<DasType>int(11)|0s</DasType>
<Position>7</Position>
</column>
<column id="370" parent="333" name="id">
<column id="365" parent="331" name="id">
<DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull>
<Position>1</Position>
</column>
<column id="371" parent="333" name="username">
<column id="366" parent="331" name="username">
<DasType>varchar(12)|0s</DasType>
<Position>2</Position>
</column>
<column id="372" parent="333" name="firstname">
<column id="367" parent="331" name="firstname">
<DasType>varchar(16)|0s</DasType>
<Position>3</Position>
</column>
<column id="373" parent="333" name="lastname">
<column id="368" parent="331" name="lastname">
<DasType>varchar(16)|0s</DasType>
<Position>4</Position>
</column>
<column id="374" parent="333" name="dob">
<column id="369" parent="331" name="dob">
<DasType>date|0s</DasType>
<Position>5</Position>
</column>
<column id="375" parent="333" name="email">
<column id="370" parent="331" name="email">
<DasType>varchar(32)|0s</DasType>
<Position>6</Position>
</column>
<column id="376" parent="333" name="is_admin">
<column id="371" parent="331" name="is_admin">
<DasType>tinyint(1)|0s</DasType>
<DefaultExpression>0</DefaultExpression>
<Position>7</Position>
</column>
<column id="377" parent="333" name="gdpr">
<column id="372" parent="331" name="gdpr">
<DasType>date|0s</DasType>
<Position>8</Position>
</column>
<column id="378" parent="333" name="hash">
<column id="373" parent="331" name="hash">
<DasType>varchar(128)|0s</DasType>
<Position>9</Position>
</column>
<column id="379" parent="333" name="is_email_verified">
<column id="374" parent="331" name="is_email_verified">
<DasType>tinyint(1)|0s</DasType>
<DefaultExpression>0</DefaultExpression>
<NotNull>1</NotNull>
<Position>10</Position>
</column>
<index id="380" parent="333" name="PRIMARY">
<index id="375" parent="331" name="PRIMARY">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="381" parent="333" name="users_pk">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="382" parent="333" name="users_pk_2">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="383" parent="333" name="username">
<index id="376" parent="331" name="username">
<ColNames>username</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="384" parent="333" name="email">
<index id="377" parent="331" name="email">
<ColNames>email</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<key id="385" parent="333" name="PRIMARY">
<key id="378" parent="331" name="PRIMARY">
<NameSurrogate>1</NameSurrogate>
<Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key>
<key id="386" parent="333" name="users_pk">
<UnderlyingIndexName>users_pk</UnderlyingIndexName>
</key>
<key id="387" parent="333" name="users_pk_2">
<UnderlyingIndexName>users_pk_2</UnderlyingIndexName>
</key>
<key id="388" parent="333" name="username">
<key id="379" parent="331" name="username">
<UnderlyingIndexName>username</UnderlyingIndexName>
</key>
<key id="389" parent="333" name="email">
<key id="380" parent="331" name="email">
<UnderlyingIndexName>email</UnderlyingIndexName>
</key>
<column id="390" parent="334" name="id">
<column id="381" parent="332" name="id">
<DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull>
<Position>1</Position>
</column>
<column id="391" parent="334" name="plate_number">
<column id="382" parent="332" name="plate_number">
<DasType>varchar(8)|0s</DasType>
<Position>2</Position>
</column>
<column id="392" parent="334" name="model_id">
<column id="383" parent="332" name="model_id">
<DasType>varchar(36)|0s</DasType>
<Position>3</Position>
</column>
<column id="393" parent="334" name="odometer">
<column id="384" parent="332" name="odometer">
<DasType>int(11)|0s</DasType>
<Position>4</Position>
</column>
<column id="394" parent="334" name="health_state">
<column id="385" parent="332" name="health_state">
<DasType>float|0s</DasType>
<Position>5</Position>
</column>
<column id="395" parent="334" name="isAvailable">
<DasType>tinyint(1)|0s</DasType>
<DefaultExpression>1</DefaultExpression>
<NotNull>1</NotNull>
<Position>6</Position>
</column>
<index id="396" parent="334" name="PRIMARY">
<index id="386" parent="332" name="PRIMARY">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<key id="397" parent="334" name="PRIMARY">
<key id="387" parent="332" name="PRIMARY">
<NameSurrogate>1</NameSurrogate>
<Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName>

1
.idea/sqldialects.xml generated
View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/1f2800b5-8649-4a80-a9ec-b7b2a24623b4/console.sql" dialect="MariaDB" />
<file url="PROJECT" dialect="MariaDB" />
</component>
</project>

View File

@ -3,10 +3,10 @@ import type {IDbModel} from "@interfaces/database/IDbModel";
import type {IDbUser} from "@interfaces/database/IDbUser";
import type {IDbBrand} from "@interfaces/database/IDbBrand";
import type {IDbStatusResult} from "@interfaces/database/IDbStatusResult";
import type {IDbVehicle} from "@interfaces/database/IDbVehicle";
import mysql, {type Connection, type ConnectionOptions} from 'mysql2';
import {Logger} from "tslog";
import process from "node:process";
import {IDbVehicle} from "@interfaces/database/IDbVehicle";
const access: ConnectionOptions = {
@ -464,7 +464,6 @@ const MySqlService = {
}
});
},
/**
* Retrieves a model by its ID from the database.
*
@ -647,63 +646,34 @@ const MySqlService = {
})
},
/**
* Retrieves a vehicle from the database by its ID.
*
* @param {MysqlHandler} handler - The instance of the MySQL handler.
* @param {string} vehicleId - The ID of the vehicle to retrieve.
* @returns {Promise<IDbVehicle>} - A promise that resolves to the retrieved vehicle.
* @throws {Error} - If an error occurs while retrieving the vehicle.
*/
getById(handler: MysqlHandler, vehicleId: string): Promise<IDbVehicle> {
//TODO get by slug
getBySlug(handler: MysqlHandler, data: IDbVehicle) {
return new Promise((resolve, reject) => {
if (!vehicleId) return reject('Id is undefined');
if (vehicleId.length !== 36) return reject('Id invalid');
const _sql = "SELECT * FROM `vehicles` WHERE `id` = ?";
const _values = [vehicleId];
try {
resolve(handler.execute(_sql, _values) as unknown as IDbVehicle);
} catch (err: unknown) {
reject(err as Error);
}
});
})
},
/**
* Retrieves all vehicles from the database.
*
* @param {MysqlHandler} handler - The MySQL handler for executing queries.
* @return {Promise<Array<IDbVehicle>>} A promise that resolves with an array of database vehicles.
* @throws {Error} If an error occurs during the database query.
*/
getAll(handler: MysqlHandler): Promise<Array<IDbVehicle>> {
//TODO get all
getAll(handler: MysqlHandler, data: IDbVehicle) {
return new Promise((resolve, reject) => {
const _sql = "SELECT * FROM `models`";
try {
resolve(handler.query(_sql) as unknown as Array<IDbVehicle>);
} catch (err: unknown) {
reject(err as Error);
}
});
})
},
/**
* Retrieves the available vehicles from the database.
*
* @param {MysqlHandler} handler - The MySQL handler object used to execute the query.
* @returns {Promise<Array<IDbVehicle>>} A promise that resolves to an array of available vehicles.
* @throws {Error} If an error occurs while executing the query.
*/
getAvailable(handler: MysqlHandler): Promise<Array<IDbVehicle>> {
//TODO get available
getAvailable(handler: MysqlHandler, data: IDbVehicle) {
return new Promise((resolve, reject) => {
const _sql = "SELECT * FROM `vehicles` WERE `isAvailable` = 1";
try {
resolve(handler.query(_sql) as unknown as Array<IDbVehicle>);
} catch (err: unknown) {
reject(err as Error);
}
})
},
//TODO get out of due date
getDue(handler: MysqlHandler, data: IDbVehicle) {
return new Promise((resolve, reject) => {
})
}
},
Category: {
/**