diff --git a/lib/CF/Schema/Result/Announcement.pm b/lib/CF/Schema/Result/Announcement.pm
index bf12c5bc08b986ed45003d4041f00e08207d81ee..9f050e77c61f94cdad83f8e29b16ff494812f910 100644
--- a/lib/CF/Schema/Result/Announcement.pm
+++ b/lib/CF/Schema/Result/Announcement.pm
@@ -17,6 +17,7 @@ __PACKAGE__->add_columns(
         sequence          => 'uid_seq'
     },
     qw(
+        event_id
         datetime
         deleted
         user_id
diff --git a/lib/CF/Schema/Result/Event.pm b/lib/CF/Schema/Result/Event.pm
index 471c1f68c7c0f6e5f1a43695e70e4228923bc962..fb1e8ad4287aaafe374668ba030e2be965880e5f 100644
--- a/lib/CF/Schema/Result/Event.pm
+++ b/lib/CF/Schema/Result/Event.pm
@@ -47,6 +47,16 @@ __PACKAGE__->has_many(
     { 'foreign.event_id' => 'self.id', },
 );
 
+__PACKAGE__->has_many(
+    program_entries => 'CF::Schema::Result::ProgramEntry',
+    { 'foreign.event_id' => 'self.id', },
+);
+
+__PACKAGE__->has_many(
+    announcements => 'CF::Schema::Result::Announcement',
+    { 'foreign.event_id' => 'self.id', },
+);
+
 __PACKAGE__->set_primary_key('id');
 
 sub format ($self) {
diff --git a/lib/CF/Schema/Result/Socket.pm b/lib/CF/Schema/Result/Socket.pm
deleted file mode 100644
index 943bc770e7f030035700e0cf3c9e3667033c5cc5..0000000000000000000000000000000000000000
--- a/lib/CF/Schema/Result/Socket.pm
+++ /dev/null
@@ -1,27 +0,0 @@
-package CF::Schema::Result::Socket;
-
-use strict;
-use warnings;
-
-use base 'DBIx::Class::Core';
-
-our $VERSION = 1;
-
-__PACKAGE__->table('sockets');
-
-__PACKAGE__->add_columns(
-    qw(
-        id
-        ip
-        user_id
-        keepalive
-    ),
-);
-
-__PACKAGE__->set_primary_key('id');
-
-__PACKAGE__->add_unique_constraint(
-    'user' => [qw(user_id)]
-);
-
-1;
diff --git a/lib/CF/Schema/Result/Socket_view.pm b/lib/CF/Schema/Result/Socket_view.pm
deleted file mode 100644
index aeaed9d7e9f6be50305e45dc59638be0f27a2b02..0000000000000000000000000000000000000000
--- a/lib/CF/Schema/Result/Socket_view.pm
+++ /dev/null
@@ -1,18 +0,0 @@
-package CF::Schema::Result::Socket_view;
-
-use strict;
-use warnings;
-
-use base 'CF::Schema::Result::Socket';
-
-our $VERSION = 1;
-
-__PACKAGE__->table('sockets_view');
-
-__PACKAGE__->add_columns(
-    qw(
-        is_member
-    ),
-);
-
-1;
diff --git a/openapi.yaml b/openapi.yaml
index 743704fe8523d3e3a3aece43a33153a3b7c6a79d..aada47b140f862582d4cf9a0e132213086db0972 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -1,7 +1,7 @@
 openapi: 3.0.3
 
 info:
-  version: "2.8.0"
+  version: "2.9.0"
   title: CF Online
   description: CF Online
   license:
diff --git a/sql/10/up.sql b/sql/10/up.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ec1eeae5c6de11fe4f7852ede096317960665fad
--- /dev/null
+++ b/sql/10/up.sql
@@ -0,0 +1,3 @@
+drop view "sockets_view";
+drop table "sockets";
+alter table "announcements" add column "event_id" integer;