mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-23 15:55:49 +00:00
commit
817273d732
12 changed files with 609 additions and 20 deletions
|
@ -0,0 +1,24 @@
|
|||
package org.springframework.cheapy.model;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name = "authorities")
|
||||
public class Authorities {
|
||||
|
||||
@Id
|
||||
String username;
|
||||
|
||||
String authority;
|
||||
|
||||
public String getAuthority() {
|
||||
return authority;
|
||||
}
|
||||
|
||||
public void setAuthority(String authority) {
|
||||
this.authority = authority;
|
||||
}
|
||||
|
||||
}
|
94
src/main/java/org/springframework/cheapy/model/Client.java
Normal file
94
src/main/java/org/springframework/cheapy/model/Client.java
Normal file
|
@ -0,0 +1,94 @@
|
|||
package org.springframework.cheapy.model;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.Digits;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@Entity
|
||||
@Table(name = "clients")
|
||||
public class Client extends User {
|
||||
|
||||
@NotEmpty
|
||||
private String address;
|
||||
|
||||
@NotEmpty
|
||||
private String timetable;
|
||||
|
||||
@NotEmpty
|
||||
@Digits(fraction = 0, integer = 10)
|
||||
private String telephone;
|
||||
|
||||
@NotEmpty
|
||||
private String description;
|
||||
|
||||
@NotEmpty
|
||||
private String code;
|
||||
|
||||
@NotEmpty
|
||||
private String food;
|
||||
|
||||
@OneToMany
|
||||
private Set<FoodOffer> foodOffers;
|
||||
|
||||
@OneToMany
|
||||
private Set<NuOffer> nuOffers;
|
||||
|
||||
@OneToMany
|
||||
private Set<SpeedOffer> speedOffers;
|
||||
|
||||
@OneToMany
|
||||
private Set<TimeOffer> timeOffers;
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getTimetable() {
|
||||
return timetable;
|
||||
}
|
||||
|
||||
public void setTimetable(String timetable) {
|
||||
this.timetable = timetable;
|
||||
}
|
||||
|
||||
public String getTelephone() {
|
||||
return telephone;
|
||||
}
|
||||
|
||||
public void setTelephone(String telephone) {
|
||||
this.telephone = telephone;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getFood() {
|
||||
return food;
|
||||
}
|
||||
|
||||
public void setFood(String food) {
|
||||
this.food = food;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.cheapy.model;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Entity
|
||||
@Table(name = "food_offers")
|
||||
public class FoodOffer extends Offer {
|
||||
|
||||
@NotBlank
|
||||
private String food;
|
||||
|
||||
@NotBlank
|
||||
private String discount;
|
||||
|
||||
@NotBlank
|
||||
private Integer units; // revisar
|
||||
|
||||
public String getFood() {
|
||||
return food;
|
||||
}
|
||||
|
||||
public void setFood(String food) {
|
||||
this.food = food;
|
||||
}
|
||||
|
||||
public String getDiscount() {
|
||||
return discount;
|
||||
}
|
||||
|
||||
public void setDiscount(String discount) {
|
||||
this.discount = discount;
|
||||
}
|
||||
|
||||
public Integer getUnits() {
|
||||
return units;
|
||||
}
|
||||
|
||||
public void setUnits(Integer units) {
|
||||
this.units = units;
|
||||
}
|
||||
|
||||
}
|
96
src/main/java/org/springframework/cheapy/model/NuOffer.java
Normal file
96
src/main/java/org/springframework/cheapy/model/NuOffer.java
Normal file
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.cheapy.model;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Entity
|
||||
@Table(name = "nu_offers")
|
||||
public class NuOffer extends Offer {
|
||||
|
||||
@NotBlank
|
||||
private Integer gold;
|
||||
|
||||
@Column(name = "discount_gold")
|
||||
@NotBlank
|
||||
private String discountGold;
|
||||
|
||||
@NotBlank
|
||||
private Integer silver;
|
||||
|
||||
@Column(name = "discount_silver")
|
||||
@NotBlank
|
||||
private String discountSilver;
|
||||
|
||||
@NotBlank
|
||||
private Integer bronze;
|
||||
|
||||
@Column(name = "discount_bronze")
|
||||
@NotBlank
|
||||
private String discountBronze;
|
||||
|
||||
public Integer getGold() {
|
||||
return gold;
|
||||
}
|
||||
|
||||
public void setGold(Integer gold) {
|
||||
this.gold = gold;
|
||||
}
|
||||
|
||||
public String getDiscountGold() {
|
||||
return discountGold;
|
||||
}
|
||||
|
||||
public void setDiscountGold(String discountGold) {
|
||||
this.discountGold = discountGold;
|
||||
}
|
||||
|
||||
public Integer getSilver() {
|
||||
return silver;
|
||||
}
|
||||
|
||||
public void setSilver(Integer silver) {
|
||||
this.silver = silver;
|
||||
}
|
||||
|
||||
public String getDiscountSilver() {
|
||||
return discountSilver;
|
||||
}
|
||||
|
||||
public void setDiscountSilver(String discountSilver) {
|
||||
this.discountSilver = discountSilver;
|
||||
}
|
||||
|
||||
public Integer getBronze() {
|
||||
return bronze;
|
||||
}
|
||||
|
||||
public void setBronze(Integer bronze) {
|
||||
this.bronze = bronze;
|
||||
}
|
||||
|
||||
public String getDiscountBronze() {
|
||||
return discountBronze;
|
||||
}
|
||||
|
||||
public void setDiscountBronze(String discountBronze) {
|
||||
this.discountBronze = discountBronze;
|
||||
}
|
||||
|
||||
}
|
87
src/main/java/org/springframework/cheapy/model/Offer.java
Normal file
87
src/main/java/org/springframework/cheapy/model/Offer.java
Normal file
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.cheapy.model;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.Future;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
@MappedSuperclass
|
||||
public class Offer extends BaseEntity {
|
||||
|
||||
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
|
||||
@NotBlank
|
||||
@Future
|
||||
private LocalDateTime start;
|
||||
|
||||
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
|
||||
@NotBlank
|
||||
@Future
|
||||
private LocalDateTime end;
|
||||
|
||||
@NotBlank
|
||||
private String code;
|
||||
|
||||
@Enumerated(value = EnumType.STRING)
|
||||
private StatusOffer type;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name="client_id")
|
||||
private Client client;
|
||||
|
||||
public LocalDateTime getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public void setStart(LocalDateTime start) {
|
||||
this.start = start;
|
||||
}
|
||||
|
||||
public LocalDateTime getEnd() {
|
||||
return end;
|
||||
}
|
||||
|
||||
public void setEnd(LocalDateTime end) {
|
||||
this.end = end;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public StatusOffer getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(StatusOffer type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.cheapy.model;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Entity
|
||||
@Table(name = "speed_offers")
|
||||
public class SpeedOffer extends Offer {
|
||||
|
||||
@NotBlank
|
||||
private Integer gold; // x minutos
|
||||
|
||||
@Column(name = "discount_gold")
|
||||
@NotBlank
|
||||
private String discountGold;
|
||||
|
||||
@NotBlank
|
||||
private Integer silver;
|
||||
|
||||
@Column(name = "discount_silver")
|
||||
@NotBlank
|
||||
private String discountSilver;
|
||||
|
||||
@NotBlank
|
||||
private Integer bronze;
|
||||
|
||||
@Column(name = "discount_bronze")
|
||||
@NotBlank
|
||||
private String discountBronze;
|
||||
|
||||
public Integer getGold() {
|
||||
return gold;
|
||||
}
|
||||
|
||||
public void setGold(Integer gold) {
|
||||
this.gold = gold;
|
||||
}
|
||||
|
||||
public String getDiscountGold() {
|
||||
return discountGold;
|
||||
}
|
||||
|
||||
public void setDiscountGold(String discountGold) {
|
||||
this.discountGold = discountGold;
|
||||
}
|
||||
|
||||
public Integer getSilver() {
|
||||
return silver;
|
||||
}
|
||||
|
||||
public void setSilver(Integer silver) {
|
||||
this.silver = silver;
|
||||
}
|
||||
|
||||
public String getDiscountSilver() {
|
||||
return discountSilver;
|
||||
}
|
||||
|
||||
public void setDiscountSilver(String discountSilver) {
|
||||
this.discountSilver = discountSilver;
|
||||
}
|
||||
|
||||
public Integer getBronze() {
|
||||
return bronze;
|
||||
}
|
||||
|
||||
public void setBronze(Integer bronze) {
|
||||
this.bronze = bronze;
|
||||
}
|
||||
|
||||
public String getDiscountBronze() {
|
||||
return discountBronze;
|
||||
}
|
||||
|
||||
public void setDiscountBronze(String discountBronze) {
|
||||
this.discountBronze = discountBronze;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package org.springframework.cheapy.model;
|
||||
|
||||
public enum StatusOffer {
|
||||
active, inactive, hidden
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.cheapy.model;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
import javax.validation.constraints.Future;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
@Entity
|
||||
@Table(name = "time_offers")
|
||||
public class TimeOffer extends Offer {
|
||||
|
||||
@DateTimeFormat(pattern = "HH:mm")
|
||||
@NotBlank
|
||||
private LocalTime init;
|
||||
|
||||
@DateTimeFormat(pattern = "HH:mm")
|
||||
@NotBlank
|
||||
private LocalTime finish;
|
||||
|
||||
@NotBlank
|
||||
private String discount;
|
||||
|
||||
|
||||
|
||||
public String getDiscount() {
|
||||
return discount;
|
||||
}
|
||||
|
||||
public void setDiscount(String discount) {
|
||||
this.discount = discount;
|
||||
}
|
||||
|
||||
}
|
58
src/main/java/org/springframework/cheapy/model/User.java
Normal file
58
src/main/java/org/springframework/cheapy/model/User.java
Normal file
|
@ -0,0 +1,58 @@
|
|||
package org.springframework.cheapy.model;
|
||||
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
|
||||
@MappedSuperclass
|
||||
public class User extends BaseEntity {
|
||||
|
||||
@NotBlank
|
||||
String username;
|
||||
|
||||
@NotBlank
|
||||
String password;
|
||||
|
||||
@Email
|
||||
@NotBlank
|
||||
String email;
|
||||
|
||||
@OneToOne
|
||||
Authorities authority;
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public Authorities getAuthority() {
|
||||
return authority;
|
||||
}
|
||||
|
||||
public void setAuthority(Authorities authority) {
|
||||
this.authority = authority;
|
||||
}
|
||||
|
||||
}
|
|
@ -5,3 +5,10 @@ spring.datasource.username=${MYSQL_USER:cheapy}
|
|||
spring.datasource.password=${MYSQL_PASS:cheapy}
|
||||
# SQL is written to be idempotent so this is safe
|
||||
spring.datasource.initialization-mode=always
|
||||
|
||||
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
|
||||
spring.jpa.properties.javax.persistence.schema-generation.drop-source=metadata
|
||||
# Naming strategy
|
||||
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
|
||||
# Allows Hibernate to generate SQL optimized for a particular DBMS
|
||||
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
|
|
|
@ -1,23 +1,30 @@
|
|||
# database init, supports mysql too
|
||||
database=h2
|
||||
spring.datasource.schema=classpath*:db/${database}/schema.sql
|
||||
database=mysql
|
||||
#spring.datasource.schema=classpath*:db/${database}/schema.sql
|
||||
spring.datasource.data=classpath*:db/${database}/data.sql
|
||||
|
||||
spring.h2.console.enabled=true
|
||||
spring.profiles.active=mysql
|
||||
# Web
|
||||
spring.thymeleaf.mode=HTML
|
||||
|
||||
# JPA
|
||||
spring.jpa.hibernate.ddl-auto=none
|
||||
spring.jpa.open-in-view=false
|
||||
spring.jpa.hibernate.ddl-auto=create-drop
|
||||
spring.jpa.show-sql=true
|
||||
spring.jpa.properties.hibernate.format_sql=true
|
||||
spring.jpa.properties.javax.persistence.schema-generation.drop-source=script
|
||||
spring.jpa.properties.javax.persistence.schema-generation.drop-script-source=drop-tables.sql
|
||||
|
||||
# Internationalization
|
||||
spring.messages.basename=messages/messages
|
||||
|
||||
|
||||
# Views
|
||||
spring.mvc.view.prefix: /WEB-INF/jsp/
|
||||
spring.mvc.view.suffix: .jsp
|
||||
|
||||
# Actuator
|
||||
|
||||
# Actuator / Management
|
||||
management.endpoints.web.base-path=/manage
|
||||
management.endpoints.web.exposure.include=*
|
||||
|
||||
# Logging
|
||||
|
@ -27,5 +34,3 @@ logging.level.org.springframework=INFO
|
|||
|
||||
# Maximum time static resources should be cached
|
||||
spring.resources.cache.cachecontrol.max-age=12h
|
||||
|
||||
spring.profiles.active=mysql
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
INSERT IGNORE INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');
|
||||
INSERT IGNORE INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749');
|
||||
INSERT IGNORE INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763');
|
||||
INSERT IGNORE INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198');
|
||||
INSERT IGNORE INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765');
|
||||
INSERT IGNORE INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654');
|
||||
INSERT IGNORE INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387');
|
||||
INSERT IGNORE INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683');
|
||||
INSERT IGNORE INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435');
|
||||
INSERT IGNORE INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487');
|
||||
INSERT INTO owners VALUES (1, 'Javi', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');
|
||||
INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749');
|
||||
INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763');
|
||||
INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198');
|
||||
INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765');
|
||||
INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654');
|
||||
INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387');
|
||||
INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683');
|
||||
INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435');
|
||||
INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487');
|
||||
|
||||
|
||||
INSERT INTO food_offers(start, end, code, type, client_id, food, discount, units) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null, 'macarrones', '15%', 10);
|
||||
|
||||
INSERT INTO time_offers(start, end, code, type, client_id, init, finish, discount) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null, '12:00:00', '13:00:00', '10%');
|
Loading…
Reference in a new issue