Skip to content
Snippets Groups Projects
Commit 1632b54c authored by migudel's avatar migudel :speech_balloon:
Browse files

Add ts types and json mocks, remove poblate scripts and fix the cascade...

Add ts types and json mocks, remove poblate scripts and fix the cascade relation from Address and Hotel
parent 97169890
No related branches found
No related tags found
2 merge requests!10Add ts types and json mocks, remove poblate scripts and fix the cascade...,!4Add ts types and json mocks, remove poblate scripts and fix the cascade...
Showing with 133 additions and 282 deletions
[
{
"user": {
"name": "John Doe",
"email": "john.doe@example.com",
"status": "NO_BOOKINGS"
},
"room": {
"roomNumber": "101",
"type": "SINGLE",
"available": true
},
"startDate": "2024-03-01",
"endDate": "2024-03-08"
},
{
"user": {
"name": "Pepe",
"email": "pepe@example.com",
"status": "WITH_ACTIVE_BOOKINGS"
},
"room": {
"roomNumber": "101",
"type": "SINGLE",
"available": true
},
"startDate": "2024-03-15",
"endDate": "2024-03-22"
}
]
[
{
"name": "Hotel 1",
"address": {
"streetName": "Aca al lao",
"streetKind": "Alargada",
"number": 12,
"postCode": "12345"
},
"rooms": [
{
"roomNumber": "101",
"type": "SINGLE",
"available": true
},
{
"roomNumber": "102",
"type": "DOUBLE",
"available": false
}
]
},
{
"name": "Hotel 2",
"address": {
"streetName": "Calle de la plaza",
"streetKind": "Alargada",
"number": 12,
"postCode": "12345"
},
"rooms": [
{
"roomNumber": "103",
"type": "SUITE",
"available": true
}
]
}
]
[
{
"name": "John Doe",
"email": "john.doe@example.com",
"status": "NO_BOOKINGS"
},
{
"name": "Pepe",
"email": "pepe@example.com",
"status": "WITH_ACTIVE_BOOKINGS"
}
]
export interface Address {
streetKind: string;
streetName: string;
number: number;
postCode: string;
otherInfo?: string;
}
import { Room } from "./Room";
import { User } from "./User";
export interface Booking {
startDate: Date;
endDate: Date;
user: User;
room: Room;
}
import { Room } from "./Room";
import { User } from "./User";
export interface Booking {
startDate: Date;
endDate: Date;
user: User;
room: Room;
}
import { Address } from "./Address";
import { Room } from "./Room";
export interface Hotel {
name: string;
address: Address;
rooms: Room[];
}
export interface Room {
roomNumber: String;
// type: "single" | "double" | "suite";
type: "SINGLE" | "DOUBLE" | "SUITE";
available: boolean;
}
export interface User {
name: string;
email: String;
// status: "noBookings" | "withActiveBookings" | "withInactiveBookings";
status: "NO_BOOKINGS" | "WITH_ACTIVE_BOOKINGS" | "WITH_INACTIVE_BOOKINGS";
}
export type * from "./User";
export type * from "./Address";
export type * from "./Date";
export type * from "./Hotel";
export type * from "./Room";
export type * from "./User";
......@@ -20,7 +20,6 @@ public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private int id;
@Basic(optional = false)
......@@ -32,7 +31,6 @@ public class Address {
private String streetName;
@Basic(optional = false)
@Column(name = "number")
private int number;
@Basic(optional = false)
......@@ -44,7 +42,7 @@ public class Address {
private String otherInfo;
@JsonIgnore
@OneToOne(mappedBy = "address", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@OneToOne(mappedBy = "address", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Hotel hotel;
public Address() {
......
import requests
import json
# Definir las URLs base para las rutas de la API
base_url = "http://localhost:8080"
# Datos en formato JSONvar users = [
users = [
{
"name": "John Doe",
"email": "john.doe@example.com",
"status": "NO_BOOKINGS",
},
{
"name": "Pepe",
"email": "pepe@example.com",
"status": "WITH_ACTIVE_BOOKINGS",
},
];
rooms = [
{
"roomNumber": "101",
"roomType": "single",
"available": True,
},
{
"roomNumber": "102",
"roomType": "double",
"available": False,
},
{
"roomNumber": "103",
"roomType": "suite",
"available": True,
},
];
hotels = [
{
"name": "Hotel 1",
"address": {
"streetName": "Aca al lao",
"streetKind": "Alargada",
"number": 12,
"postCode": "12345",
},
"rooms": rooms[0:-1],
},
{
"name": "Hotel 2",
"address": {
"streetName": "Calle de la plaza",
"streetKind": "Alargada",
"number": 12,
"postCode": "12345",
},
"rooms": rooms[-1:-2]
},
];
bookings = [
{
"user": users[1],
"room": rooms[0],
"startDate": "2024-03-01",
"endDate": "2024-03-08",
},
{
"user": users[1],
"room": rooms[1],
"startDate": "2024-03-15",
"endDate": "2024-03-22",
},
];
# Función para enviar datos a la API
def post_data(endpoint, data):
url = f"{base_url}/{endpoint}"
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(data), headers=headers)
if response.status_code == 201:
print(f"Success: {endpoint}")
else:
print(f"Failed: {endpoint} - Status Code: {response.status_code}, Response: {response.text}")
# Enviar usuarios
for user in users:
post_data("users", user)
# Enviar hoteles
for hotel in hotels:
post_data("hotels", hotel)
# Enviar habitaciones
for room in rooms:
post_data(f"hotels/{room['hotelId']}/rooms", room)
# Enviar reservas
for booking in bookings:
post_data("bookings", booking)
\ No newline at end of file
interface Date {
day: number;
month: number;
year: number;
}
interface Address {
streetKind: string;
streetName: string;
number: number;
postCode: string;
otherInfo?: string;
}
interface User {
name: string;
email: String;
// status: "noBookings" | "withActiveBookings" | "withInactiveBookings";
status: "NO_BOOKINGS" | "WITH_ACTIVE_BOOKINGS" | "WITH_INACTIVE_BOOKINGS";
}
interface Booking {
startDate: Date;
endDate: Date;
user: User;
room: Room;
}
interface Room {
roomNumber: String;
type: "single" | "double" | "suite";
// type: "SINGLE" | "DOUBLE" | "SUITE"
available: boolean;
}
interface Hotel {
name: string;
address: Address;
rooms: Room[];
}
// Insert data
// 1. User
// 2. Room
// 3. Hotel with address
// 4. Booking
const users: User[] = [
{
name: "John Doe",
email: "john.doe@example.com",
status: "NO_BOOKINGS",
},
{
name: "Pepe",
email: "pepe@example.com",
status: "WITH_ACTIVE_BOOKINGS",
},
];
const rooms: Room[] = [
{
roomNumber: "101",
type: "single",
available: true,
},
{
roomNumber: "102",
type: "double",
available: false,
},
{
roomNumber: "103",
type: "suite",
available: true,
},
];
const hotels: Hotel[] = [
{
name: "Hotel 1",
address: {
streetName: "Aca al lao",
streetKind: "Alargada",
number: 12,
postCode: "12345",
},
rooms: [...rooms.slice(0, -1)],
},
{
name: "Hotel 2",
address: {
streetName: "Calle de la plaza",
streetKind: "Alargada",
number: 12,
postCode: "12345",
},
rooms: [...rooms.slice(-1)],
},
];
const bookings: Booking[] = [
{
user: users[1],
room: rooms[0],
startDate: new Date("2024-03-01"),
endDate: new Date("2024-03-08"),
},
{
user: users[1],
room: rooms[1],
startDate: new Date("2024-03-15"),
endDate: new Date("2024-03-22"),
},
];
const data: { name: string; value: User[] | Room[] | Hotel[] | Booking[] }[] = [
{
name: "users",
value: users,
},
{
name: "rooms",
value: rooms,
},
{
name: "hotels",
value: hotels,
},
{
name: "bookings",
value: bookings,
},
];
const save = async ({ name, value }) => {
const result = await fetch(`http://localhost:8080/${name}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(value),
});
const response = await result.json();
if (response?.status) {
console.error({
table: name,
request: JSON.stringify(value, null, 2),
response,
// response: JSON.stringify(response, null, 2),
});
}
};
for (const object of data) {
save(object);
}
const _hotels: Hotel[] = [
{
name: "Hotel 1",
address: {
streetName: "Aca al lao",
streetKind: "Alargada",
number: 12,
postCode: "12345",
},
rooms: [
{
roomNumber: "101",
type: "SINGLE",
available: true,
},
{
roomNumber: "102",
type: "DOUBLE",
available: false,
},
],
},
];
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment