Skip to content

Commit a8d85f4

Browse files
committed
Simplified SQL
1 parent 36ed1aa commit a8d85f4

4 files changed

Lines changed: 17 additions & 30 deletions

File tree

common/src/main/java/com/codeheadsystems/motif/model/Timestamp.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import java.time.Clock;
44
import java.time.Instant;
5+
import java.time.OffsetDateTime;
6+
import java.time.ZoneOffset;
57
import java.time.format.DateTimeParseException;
68
import java.util.Objects;
79

@@ -42,4 +44,13 @@ public String toIso() {
4244
return timestamp.toString();
4345
}
4446

47+
/**
48+
* Returns this timestamp as an OffsetDateTime in UTC.
49+
*
50+
* @return the UTC OffsetDateTime representation.
51+
*/
52+
public OffsetDateTime toOffsetDateTime() {
53+
return timestamp.atOffset(ZoneOffset.UTC);
54+
}
55+
4556
}

server-database/src/main/java/com/codeheadsystems/motif/server/db/EventDao.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.sql.ResultSet;
1010
import java.sql.SQLException;
1111
import java.time.OffsetDateTime;
12-
import java.time.ZoneOffset;
1312
import java.util.List;
1413
import java.util.Optional;
1514
import java.util.UUID;
@@ -32,8 +31,6 @@ public interface EventDao {
3231
+ "JOIN subjects s ON e.subject_uuid = s.uuid "
3332
+ "JOIN owners o ON e.owner_uuid = o.uuid";
3433

35-
// --- SQL-level methods ---
36-
3734
@SqlUpdate("INSERT INTO events (uuid, owner_uuid, subject_uuid, value, timestamp) "
3835
+ "VALUES (:uuid, :ownerUuid, :subjectUuid, :value, :timestamp) "
3936
+ "ON CONFLICT (uuid) DO UPDATE SET "
@@ -72,15 +69,12 @@ List<Event> findByOwnerSubjectAndTimeRange(@Bind("ownerUuid") UUID ownerUuid,
7269
@Bind("from") OffsetDateTime from,
7370
@Bind("to") OffsetDateTime to);
7471

75-
// --- Domain-level methods ---
76-
7772
default void store(Event event) {
78-
upsert(
79-
event.identifier().uuid(),
73+
upsert(event.identifier().uuid(),
8074
event.owner().identifier().uuid(),
8175
event.subject().identifier().uuid(),
8276
event.value(),
83-
event.timestamp().timestamp().atOffset(ZoneOffset.UTC));
77+
event.timestamp().toOffsetDateTime());
8478
}
8579

8680
default Optional<Event> get(Owner owner, Identifier identifier) {
@@ -96,23 +90,17 @@ default List<Event> findBySubject(Owner owner, Subject subject) {
9690
}
9791

9892
default List<Event> findByTimeRange(Owner owner, Timestamp from, Timestamp to) {
99-
return findByOwnerAndTimeRange(
100-
owner.identifier().uuid(),
101-
from.timestamp().atOffset(ZoneOffset.UTC),
102-
to.timestamp().atOffset(ZoneOffset.UTC));
93+
return findByOwnerAndTimeRange(owner.identifier().uuid(),
94+
from.toOffsetDateTime(), to.toOffsetDateTime());
10395
}
10496

10597
default List<Event> findBySubjectAndTimeRange(Owner owner, Subject subject,
10698
Timestamp from, Timestamp to) {
107-
return findByOwnerSubjectAndTimeRange(
108-
owner.identifier().uuid(),
99+
return findByOwnerSubjectAndTimeRange(owner.identifier().uuid(),
109100
subject.identifier().uuid(),
110-
from.timestamp().atOffset(ZoneOffset.UTC),
111-
to.timestamp().atOffset(ZoneOffset.UTC));
101+
from.toOffsetDateTime(), to.toOffsetDateTime());
112102
}
113103

114-
// --- Row mapper ---
115-
116104
class EventRowMapper implements RowMapper<Event> {
117105
@Override
118106
public Event map(ResultSet rs, StatementContext ctx) throws SQLException {

server-database/src/main/java/com/codeheadsystems/motif/server/db/OwnerDao.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
@RegisterRowMapper(OwnerDao.OwnerRowMapper.class)
1717
public interface OwnerDao {
1818

19-
// --- SQL-level methods ---
20-
2119
@SqlUpdate("INSERT INTO owners (uuid, value) "
2220
+ "VALUES (:uuid, :value) "
2321
+ "ON CONFLICT (uuid) DO UPDATE SET "
@@ -33,8 +31,6 @@ public interface OwnerDao {
3331
@SqlQuery("SELECT * FROM owners WHERE value = :value")
3432
Optional<Owner> findByValue(@Bind("value") String value);
3533

36-
// --- Domain-level methods ---
37-
3834
default void store(Owner owner) {
3935
upsert(owner.identifier().uuid(), owner.value());
4036
}
@@ -51,8 +47,6 @@ default Optional<Owner> find(String value) {
5147
return findByValue(value.strip().toUpperCase());
5248
}
5349

54-
// --- Row mapper ---
55-
5650
class OwnerRowMapper implements RowMapper<Owner> {
5751
@Override
5852
public Owner map(ResultSet rs, StatementContext ctx) throws SQLException {

server-database/src/main/java/com/codeheadsystems/motif/server/db/SubjectDao.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ public interface SubjectDao {
2323
+ "o.value AS owner_value "
2424
+ "FROM subjects s JOIN owners o ON s.owner_uuid = o.uuid";
2525

26-
// --- SQL-level methods ---
27-
2826
@SqlUpdate("INSERT INTO subjects (uuid, owner_uuid, category, value) "
2927
+ "VALUES (:uuid, :ownerUuid, :category, :value) "
3028
+ "ON CONFLICT (uuid) DO UPDATE SET "
@@ -53,8 +51,6 @@ Optional<Subject> findByOwnerCategoryAndValue(@Bind("ownerUuid") UUID ownerUuid,
5351
@Bind("category") String category,
5452
@Bind("value") String value);
5553

56-
// --- Domain-level methods ---
57-
5854
default void store(Subject subject) {
5955
upsert(subject.identifier().uuid(),
6056
subject.owner().identifier().uuid(),
@@ -78,8 +74,6 @@ default Optional<Subject> find(Owner owner, Category category, String value) {
7874
return findByOwnerCategoryAndValue(owner.identifier().uuid(), category.value(), value);
7975
}
8076

81-
// --- Row mapper ---
82-
8377
class SubjectRowMapper implements RowMapper<Subject> {
8478
@Override
8579
public Subject map(ResultSet rs, StatementContext ctx) throws SQLException {

0 commit comments

Comments
 (0)