Skip to content

Commit 2129f25

Browse files
committed
core: initial app, models, migrations
1 parent 7d334eb commit 2129f25

File tree

9 files changed

+118
-2
lines changed

9 files changed

+118
-2
lines changed

Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
1+
DEV_CMD=cd intbot && DJANGO_ENV="dev" uv run ./manage.py
12

23

34
help:
45
# First target is dummy so we you won't run anything by accident
56
@echo "Hello world!, Please check the file content for details"
67

78
server:
8-
cd intbot && DJANGO_ENV="dev" uv run ./manage.py runserver 0.0.0.0:4672
9+
$(DEV_CMD) runserver 0.0.0.0:4672
10+
11+
shell:
12+
$(DEV_CMD) shell_plus
913

1014
migrate:
11-
cd intbot && DJANGO_ENV="dev" uv run ./manage.py migrate
15+
$(DEV_CMD) migrate
16+
17+
migrations:
18+
$(DEV_CMD) makemigrations -n $(N)
1219

1320
test:
1421
cd intbot && DJANGO_SETTINGS_MODULE="intbot.settings" DJANGO_ENV="test" uv run pytest

intbot/core/__init__.py

Whitespace-only changes.

intbot/core/admin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.contrib import admin
2+
3+
from core.models import Webhook, DiscordMessage
4+
5+
admin.site.register(Webhook)
6+
admin.site.register(DiscordMessage)

intbot/core/apps.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class CoreConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'core'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Generated by Django 5.1.4 on 2025-01-08 13:54
2+
3+
import uuid
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='DiscordMessage',
17+
fields=[
18+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19+
('uuid', models.UUIDField(default=uuid.uuid4)),
20+
('channel_id', models.CharField(max_length=255)),
21+
('channel_name', models.CharField(max_length=255)),
22+
('content', models.TextField()),
23+
('created_at', models.DateTimeField(auto_now_add=True)),
24+
('modified_at', models.DateTimeField(auto_now=True)),
25+
('sent_at', models.DateTimeField(blank=True, null=True)),
26+
],
27+
),
28+
migrations.CreateModel(
29+
name='Webhook',
30+
fields=[
31+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
32+
('uuid', models.UUIDField(default=uuid.uuid4)),
33+
('source', models.CharField(max_length=255)),
34+
('event', models.CharField(max_length=255)),
35+
('signature', models.CharField(max_length=255)),
36+
('meta', models.JSONField()),
37+
('content', models.JSONField()),
38+
('created_at', models.DateTimeField(auto_now_add=True)),
39+
('modified_at', models.DateTimeField(auto_now=True)),
40+
('processed_at', models.DateTimeField(blank=True, null=True)),
41+
],
42+
),
43+
]

intbot/core/migrations/__init__.py

Whitespace-only changes.

intbot/core/models.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import uuid
2+
3+
from django.db import models
4+
5+
6+
class Webhook(models.Model):
7+
uuid = models.UUIDField(default=uuid.uuid4)
8+
9+
source = models.CharField(max_length=255)
10+
event = models.CharField(max_length=255)
11+
12+
# Cryptographic signature of the webhook
13+
signature = models.CharField(max_length=255)
14+
15+
# Extra information about the webhook, that might be provided in the
16+
# headers or similar
17+
meta = models.JSONField()
18+
19+
content = models.JSONField()
20+
21+
created_at = models.DateTimeField(auto_now_add=True)
22+
modified_at = models.DateTimeField(auto_now=True)
23+
processed_at = models.DateTimeField(blank=True, null=True)
24+
25+
def __str__(self):
26+
return f"{self.uuid}"
27+
28+
29+
class DiscordMessage(models.Model):
30+
uuid = models.UUIDField(default=uuid.uuid4)
31+
32+
# This is intentionally char field, even if discord.py requires later to
33+
# cast it to int
34+
channel_id = models.CharField(max_length=255)
35+
# Channel name at the time of scheduling the message
36+
channel_name = models.CharField(max_length=255)
37+
38+
content = models.TextField()
39+
40+
created_at = models.DateTimeField(auto_now_add=True)
41+
modified_at = models.DateTimeField(auto_now=True)
42+
43+
# Messages to be have null here
44+
sent_at = models.DateTimeField(blank=True, null=True)
45+
46+
def __str__(self):
47+
return f"{self.uuid} {self.content[:30]}"

intbot/core/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.shortcuts import render
2+
3+
# Create your views here.

intbot/intbot/settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
'django.contrib.sessions',
2626
'django.contrib.messages',
2727
'django.contrib.staticfiles',
28+
# Third party apps
29+
"django_extensions",
30+
# Project apps
31+
"core",
2832
]
2933

3034
MIDDLEWARE = [

0 commit comments

Comments
 (0)