diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index f3141e1ab1112c7baf4d8307d7cb097390ad66ef..fe6edc3e4f8f5fcb06011bc0d9ef0fc694c4f094 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java @@ -3,6 +3,7 @@ package at.tuwien.entities.database.table; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.database.table.constraints.Constraints; +import at.tuwien.entities.user.User; import lombok.*; import lombok.extern.log4j.Log4j2; import net.sf.jsqlparser.statement.select.FromItem; @@ -44,10 +45,27 @@ public class Table { @Column(name = "created_by", columnDefinition = "VARCHAR(36)") private UUID createdBy; + @ToString.Exclude + @org.springframework.data.annotation.Transient + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumns({ + @JoinColumn(name = "created_by", referencedColumnName = "ID", insertable = false, updatable = false) + }) + private User creator; + + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "owned_by", columnDefinition = "VARCHAR(36)") private UUID ownedBy; + @ToString.Exclude + @org.springframework.data.annotation.Transient + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumns({ + @JoinColumn(name = "owned_by", referencedColumnName = "ID", insertable = false, updatable = false) + }) + private User owner; + @Column(name = "tname", nullable = false) private String name; diff --git a/dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue index 96ec047712f9e095f6bce3b186790303637edd0a..a4b3d284fbcffa2bfb0bca177112c5cc783eeedb 100644 --- a/dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue +++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue @@ -142,13 +142,10 @@ export default { return this.version.substring(0, 10) + 'T' + this.version.substring(11, 19) + 'Z' }, canModify () { - if (!this.user || !this.access || !this.table || !this.table.creator) { + if (!this.user || !this.access || !this.table) { return false } - if (this.table.creator.username === this.user.username) { - return true - } - if (this.access.type === 'write_own' && this.table.creator.username === this.user.username) { + if (this.access.type === 'write_own' && this.table.owner.id === this.user.id) { return true } return this.access.type === 'write_all'